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

好的行,我必须匹配示例:

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)$/

但这是行不通的。

最佳答案

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

^(?!.*exported).*$

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

关于正则表达式匹配没有特定单词的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16563112/

10-11 19:28