匹配“IF”或“If”,前面不带美元符号 [关闭]

match "IF" or "If" not preceded with a dollar sign [closed]

提问人:Tommi Prami 提问时间:10/30/2023 最后编辑:Casimir et HippolyteTommi Prami 更新时间:10/30/2023 访问量:80

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

20天前关闭。

只是无法弄清楚我如何匹配 IF 和 If 而不是 if 或前缀 $。

例子:

If True then // <- match 
    
IF True then // <- match 
    
if True then // <- don't match (lowercase i)
     
{SIF NOT DEFINED(SAAS)} // <- don't match (part of another word)
{$IFDEF DEBUG} // <- don't match (preceded with a $)

ChatGPT 建议:

\bIf\b(?!\$)

但是当有之前时,它不起作用。$

正则表达式 PCRE

评论

0赞 David Teo 10/30/2023
尝试一次:\b[Ii][Ff]\b(?![\w$])
0赞 Enlico 10/30/2023
只是无法弄清楚我如何匹配 IF 和 IF。至少重新阅读你的问题。
0赞 David Teo 10/30/2023
(?![\w$])=> 我使用了否定前瞻断言来确保匹配的“IF”或“If”后面没有单词字符 (\w) 或美元符号 ($)。
0赞 Tommi Prami 10/30/2023
\b[Ii][Ff]\b(?![\w$])不起作用,因为它会匹配小写字母 if。
0赞 Tommi Prami 10/30/2023
肯定有错别字。If 和 IF。但代码示例应涵盖所有情况

答:

1赞 cyberbrain 10/30/2023 #1

您不必在此处使用 lookahead 或 lookbehind,因为您希望匹配术语并且仅作为一个完整的单词。只需使用单词边界:IfIF

\bI[Ff]\b