正则表达式条件分支的匹配

solookin 发布于 2012/04/09 10:41
阅读 1K+
收藏 0

比如有一段文字:

ERROROKERRORERROROKooee

 

我相匹配其中的ERROR或者OK,应该怎么写?

使用 [ERROR|OK] 只能匹配到字母 。 

加载中
0
deleted
solookin
solookin
不行的
0
皮总
皮总

[(ERROR)|(OK)]

以上代码用在 php 或者 js 等里面比较好,比喻在 bash 里面应该这么写:

sed -n '/\(OK\)\|\(ERROR\)/p' a.txt
grep "\(OK\)\|\(ERROR\)" a.txt

下面是a.txt的内容

ERROROKERRORERROROKooee
ERROR
OK
4132132
ERRAA

leetom
leetom
回复 @solookin : 不能说grep不规范吧,只是不同的标准,linux的工具基本上都是POSIX标准的,所以像vim这些的正则用起来特别难受,对Perl的比较熟悉.
皮总
皮总
回复 @solookin : 那 perl 应该是规范的吧 (应该是他发明的)在 perl 里我这么写 print "OK" if $str1 =~ /[(ERROR)|(OK)]/;
solookin
solookin
不过我觉得grep应该不是很规范的正则吧 。 或 | 不是应该在 []里么 ,还搞这么多转义
皮总
皮总
回复 @solookin : 每种语言会有细小差别,对 python 无爱,你自己折腾
solookin
solookin
egrep 下面倒是可以这么做: cat a.txt |egrep "ERROR|OK", 不过像其他脚本语言比如Python,还不知道怎么做。
下一页
返回顶部
顶部