正则表达式匹配没有特定单词的行

时间:2013-05-15 10:50:28

标签: regex

我想使用正则表达式突出显示新编程语言的功能但是我在排除具有“导出”一词的函数时遇到了问题 所以

我必须匹配示例的确定行:

routine hello
ROUTINE hello
   routine hello
   ROUTINE hello(a:INTEGER)
   routine hello (a   :  INTEGER)
   routine hello (a   :  INTEGER , b: STRING)

我不想匹配示例的行:

   routine hello (a   :  INTEGER , b: STRING) exported

我试过

^[[:blank:]]*routine[[:blank:]]+([[:alnum:]_])+[[:blank:]]*([[:alnum:]_:,[:space:]]*)/^(?!.*exported)$/

但它不起作用。

2 个答案:

答案 0 :(得分:7)

以下表达式也可以解决问题:

^(?!.*exported).*$

|________________   line begin 
 |_______________   negative lookahead
    |____________   any characters
      |__________   your exclusion word
               |_   any characters
                 |_ end of line

答案 1 :(得分:1)

您可以使用这样的表达式匹配所有不包含单词“exported”的行:

(?m)^(?!.*\bexported\b).*$