正则表达式匹配特定的关键词

时间:2015-12-01 19:48:08

标签: javascript regex

我正在尝试使用正则表达式来匹配某些特定的关键词。

对于下面的代码,我只想匹配第一行和第二行的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。

2 个答案:

答案 0 :(得分:3)

我猜你正在寻找这个,假设你为多行添加了m标志:

(?:^|\s)(IF|ELSE)(?:$|\s)

它由三组组成:

  1. (?:^|\s) - 匹配行的开头或单个空格字符
  2. (IF|ELSE) - 匹配您的一个关键字
  3. (?:$|\s) - 匹配行的结尾或单个空格字符。
  4. Regexr

答案 1 :(得分:1)

你可以通过环顾(lookahead + lookbehind)来做到这一点。这是你真正想要的,因为它明确地匹配你正在搜索的内容。你不想检查其他字符,如字符串开头或匹配周围的空格,但完全匹配“IF或ELSE没有被点包围”

/(?<!\.)(IF|ELSE)(?!\.)/g

说明:

  • 使用g-flag查找所有出现次数
  • (?<!X)Y是一个负面的lookbehind,匹配一个不在X
  • 之前的Y.
  • Y(?!X)是一个负向前瞻,它匹配Y后面没有X

工作示例:https://regex101.com/r/oS2dZ6/1

PS:如果您不必为JS编写正则表达式,请更好地使用支持posix标准的工具,如regex101.com