阿拉平平
读完需要
分钟
速读仅需 1 分钟
前几天和大家分享了一个日志高亮显示器:tailspin。在演示定制化配置时,我加了一段简单的正则匹配。事实上,线上的业务日志通常会比较复杂,对应的正则表达式也会很繁琐。这时如果有自动生成正则表达式的工具就比较方便了。
1. 项目介绍
2. 下载安装
目前 grex 的最新版本为 1.4.5,可以从 releases[2] 下获取对应的安装包。
以 Linux 服务器为例,运行以下命令安装:
# 下载安装包
wget https://github.com/pemistahl/grex/releases/download/v1.4.5/grex-v1.4.5-x86_64-unknown-linux-musl.tar.gz -O grex.tar.gz
# 解压
tar -zxf grex.tar.gz
# 将二进制文件放到 PATH 下
cp -a grex /usr/local/bin/
$ grex -v
grex 1.4.5
3. 使用说明
grex 可以作为命令行工具或代码库使用。这里主要介绍下命令行中常用的选项。
3.1 基本输入
选项:
[INPUT]... 多个测试用例用空格分隔
-f, --file <FILE> 读取文件,多个测试用例用换行分隔
# 直接输入
$ grex a b c
^[a-c]$
# 读取文件
$ grex -f test.txt
3.2 数字
选项:
-d, --digits 将所有 Unicode 十进制数字转化为 d
-D, --non-digits 将所有非
Unicode 十进制数字转化为 D
示例:
# 将所有 Unicode 十进制数字转化为 d
$ grex -d 111 abc
^(?:ddd|abc)$
# 将所有非 Unicode 十进制数字转化为 D
$ grex -D 111 abc
^(?:111|DDD)$
3.3 空格
选项:
-s, --spaces 将所有 Unicode 空格字符转化为 s
-S, --non-spaces
将所有非 Unicode 空格字符转化为 S
示例:
# 将所有 Unicode 空格字符转化为 s
$ grex -s "a b" "c bd"
^(?:csbd|asb)$
# 将所有非 Unicode 空格字符转化为 S
$ grex -S "a b" "c bd"
^S S(?:S)?$
3.4 单词
选项:
-w, --words 将所有 Unicode 单词字符转化为 w
-W, --non-words 将所有非 Unicode 单词字符转化为 W
示例:
# 将所有 Unicode 单词字符转化为 w
$ grex -w %2a ab
^%?ww$
# 将所有非 Unicode 单词字符转化为 W
$ grex -W %2a ab
^(?:W2a|ab)$
3.5 重复
选项:
-r, --repetitions 检测重复的非重叠子字符串并转换为 { min,max }
示例:
# 检测重复的非重叠子字符串并转换为 { min,max }
$ grex -r b ba baa baaa
^b(?:a{1,3})?$
4. 写在最后
grex 作为一个正则表达式生成工具,可以作为库或命令行使用,还是比较方便的。不过有了 grex, 并不意味着我们就可以不用学习正则表达式了。从示例可以看出,grex 生成的规则未必是最优解,某些情况下,还需要手动修改。
References
[1]
grex: https://github.com/pemistahl/grex
[2]
releases: https://github.com/pemistahl/grex/releases
原文始发于微信公众号(阿拉平平):grex 使用指南:一款简易的正则表达式生成工具
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/287223.html