Regex reg exp:;如果;“和单”=&引用;

Regex reg exp:;如果;“和单”=&引用;,regex,grep,Regex,Grep,我需要一个正则表达式(grep-e“),它匹配所有包含if的行,只有一行=(忽略包含=的行) 我试过这个: grep -e "if.*=[^=]" 但是=不是字符类,所以它不起作用 问题是*可能包含= 我建议 grep -e "if[^=]*=[^=]" 如果您的目标是查找包含错误赋值而不是比较的If代码行,我建议使用linter(它将基于健壮的解析器,而不仅仅是正则表达式)。当然,要使用的linter取决于代码的语言(例如我在Javascript中使用的语言)。问题是*可能包含= 我建议

我需要一个正则表达式(
grep-e“
),它匹配所有包含
if
的行,只有一行
=
(忽略包含
=
的行)

我试过这个:

grep -e "if.*=[^=]"

但是
=
不是字符类,所以它不起作用

问题是
*
可能包含
=

我建议

grep -e "if[^=]*=[^=]"

如果您的目标是查找包含错误赋值而不是比较的
If
代码行,我建议使用linter(它将基于健壮的解析器,而不仅仅是正则表达式)。当然,要使用的linter取决于代码的语言(例如我在Javascript中使用的语言)。

问题是
*
可能包含
=

我建议

grep -e "if[^=]*=[^=]"

如果您的目标是查找包含错误赋值而不是比较的
If
代码行,我建议使用linter(它将基于健壮的解析器,而不仅仅是正则表达式)。当然,要使用的linter取决于代码的语言(例如我在Javascript中使用的语言)。

您需要一直排除到行尾。如果没有锚定,
grep
将返回一个匹配,前提是在一行中的某个地方有匹配的方法
'if[^=]*=[^=]*$”
并可能添加一些内容以排除与
=
的匹配项,如果
之前的某个位置(问题不清楚这是否必要)。您需要排除到行的末尾。如果没有锚定,
grep
将返回一个匹配,前提是在一行中的某个地方有匹配的方法
'if[^=]*=[^=]*$”
并可能添加一些内容,以排除与
=
if
之前的某个地方的匹配项(从问题中不清楚这是否必要)。