0

安装 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-]*".",但没有完成我想要的。

4

2 回答 2

1

egrep不明白\s,尝试用POSIX字符类[[:space:]]代替。或者,如果您真的想允许[-[:space:]][\s-]当前拥有的空格或文字破折号(减号)。(或者您是否尝试使用 Emacs 字符类?)

不确定在 Windows 上引用规则,但传统上,我们引用整个正则表达式。

于 2013-07-25T16:20:21.507 回答
0

正确的查询是:

egrep -Hn --regexp="s_type[[:space:]]*==[[:space:]]*\"[CUOMPSQDEXYAZ]\"" FILENAME

就像 Tripleee 说的我需要使用 [[:space:]] 来表示正则表达式的空格。我还必须引用整个正则表达式,然后在实际的正则表达式中转义引号。

于 2013-07-25T17:33:34.537 回答