我正在尝试在安装egrep后在Windows上搜索正则表达式。
这是我想要找到的一个例子:
在下面的字符串中,我希望匹配比较单个特定字母的位置
if (lod_user.is_type == "A" || lod_user.is_type == "E" || lod_user.is_type == "S" || lod_user.is_type == "X")
因此可接受的结果是s_type == "A"
或s_type == "S"
这些是我尝试的查询:
"c:..\..\Program Files (x86)\GnuWin32\bin\egrep.exe" -Hn --regexp=s_type[\s-]*==[\s-]*"[CUOMPSQDEXYAZ]" FILENAME
egrep的地址,我将简称为egrep
egrep -Hn --regexp=type[\s-]*==[\s-]*"[CUOMPSQDEXYAZ]" FILENAME
egrep -Hn --regexp=[\s-]*==[\s-]*"[CUOMPSQDEXYAZ]" FILENAME
egrep -Hn --regexp=[\s-]*==[\s-]*"A" FILENAME
只用一个字母进行测试
egrep -Hn --regexp=^type[\s-]*==[\s-]*"[CUOMPSQDEXYAZ]"$ FILENAME
egrep -Hn --regexp=^type$[\s-]*==[\s-]*"[CUOMPSQDEXYAZ]" FILENAME
我不打算发布我所有的尝试因为在某些时候我刚刚开始玩耍和猜测。这个正则表达式s_type[\s-]*==[\s-]*"[CUOMPSQDEXYAZ]"
适用于http://gskinner.com/RegExr/所以我认为它有一些事情要做cmd和未转义字符的问题,但我尝试用^"
替换引号,但仍然没有。这个正则表达式虽然有效[\s-]*==[\s-]*"."
但是没有达到我想要的效果。
答案 0 :(得分:1)
egrep
无法理解\s
,请尝试使用POSIX字符类[[:space:]]
。或者,如果你真的想要允许当前有[-[:space:]]
的空格或文字短划线(减号)[\s-]
。 (或者您是否尝试使用Emacs字符类?)
不确定在Windows上引用规则,但传统上,我们引用整个正则表达式。
答案 1 :(得分:0)
正确的查询是:
egrep -Hn --regexp="s_type[[:space:]]*==[[:space:]]*\"[CUOMPSQDEXYAZ]\"" FILENAME
像tripleee一样,我需要使用[[:space:]]来表示正则表达式的空格。我还必须引用整个正则表达式,然后在实际的正则表达式中删除引号。