Regex Windows egrep与正则表达式不匹配

Regex Windows egrep与正则表达式不匹配,regex,cmd,grep,Regex,Cmd,Grep,在安装了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:..\..\ProgramFil

在安装了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:..\..\ProgramFiles(x86)\GnuWin32\bin\egrep.exe”-Hn--regexp=s_type[\s-]*=[\s-]*”[CUOMPSQDEXYAZ]”文件名

到egrep的地址,我将只称为egrep

egrep-Hn--regexp=type[\s-]*=[\s-]*“[CUOMPSQDEXYAZ]”文件名

egrep-Hn--regexp=[\s-]*=[\s-]*“[CUOMPSQDEXYAZ]”文件名

egrep-Hn--regexp=[\s-]*=[\s-]*“A”文件名
仅用一个字母测试

egrep-Hn--regexp=^type[\s-]*=[\s-]*“[CUOMPSQDEXYAZ]”“$FILENAME

egrep-Hn--regexp=^type$[\s-]*=[\s-]*“[CUOMPSQDEXYAZ]”文件名


我不会把我所有的尝试都贴出来,因为在某个时候我只是开始胡闹和猜测。这个正则表达式,
s_type[\s-]*=[\s-]*“[CUOMPSQDEXYAZ]”
,可以工作,所以我认为它与cmd有关,并且存在未换格字符的问题,但我尝试用
^“
替换引号,例如,但仍然没有任何效果。这个正则表达式虽然
[\s-]*=[\s-]*”,但仍然有效。“
但没有实现我想要的。

egrep
不理解
\s
,请尝试将POSIX字符类
[[:space:]]
放在它的位置。或者,如果您真的想允许空白或文字破折号(减号),这将是
[-[:space:]
当前的
[\s-]
。(或者您正在尝试使用Emacs角色类?)

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

正确的查询是:

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

正如tripleee所说,我需要使用[[:space:]来表示regex的空间。我还必须引用整个正则表达式,然后转义实际正则表达式中的引号。

我必须在正则表达式中查找空格,因为我不记得它是什么。如果你引用整个正则表达式,那么它将引用正则表达式工作的内部内容,或者我必须避开它们吗?空格起作用了,但我得到了一些奇怪的结果,比如查询的
if(lod_deliverable.is_type==SSDeliverableTypes.ProjectAdmin)
——regexp=s_type[[:space:][]*=[:space:][space:][CUOMPSQDEXYAZ]“将尝试在整个正则表达式中使用引号编辑:仍然得到相同的结果