我正在尝试使用正则表达式来匹配某些特定的关键词。
对于下面的代码,我只想匹配第一行和第二行的IF,它们没有前缀和后缀。我现在使用的正则表达式是\b(IF|ELSE)\b
,它将为我提供所有IF。
IF A > B THEN STOP
IF B < C THEN STOP
LOL.IF
IF.LOL
IF.ELSE
提前感谢您的帮助。 我正在使用http://regexr.com/进行测试。 需要使用JS。
答案 0 :(得分:3)
我猜你正在寻找这个,假设你为多行添加了m
标志:
(?:^|\s)(IF|ELSE)(?:$|\s)
它由三组组成:
(?:^|\s)
- 匹配行的开头或单个空格字符(IF|ELSE)
- 匹配您的一个关键字(?:$|\s)
- 匹配行的结尾或单个空格字符。答案 1 :(得分:1)
你可以通过环顾(lookahead + lookbehind)来做到这一点。这是你真正想要的,因为它明确地匹配你正在搜索的内容。你不想检查其他字符,如字符串开头或匹配周围的空格,但完全匹配“IF或ELSE没有被点包围”
/(?<!\.)(IF|ELSE)(?!\.)/g
说明:
(?<!X)Y
是一个负面的lookbehind,匹配一个不在X Y(?!X)
是一个负向前瞻,它匹配Y后面没有X 工作示例:https://regex101.com/r/oS2dZ6/1
PS:如果您不必为JS编写正则表达式,请更好地使用支持posix标准的工具,如regex101.com