基于字符串的正则表达式贪婪匹配

时间:2018-11-01 11:00:36

标签: regex-lookarounds regex-greedy

1)我尝试用正则表达式匹配字符串的全部部分。我认为贪婪有问题。下面是考虑中的pl / sql的结构

ERRORHANDLER
WHEN TRUE THEN
    IF SOMETHING THEN
     ELSE
    END IF;
WHEN FALSE THEN
END;
  

以下是我为匹配 ^(\ s *)ERRORHANDLER((?!FUNCTION)。) END [(\ s )(\ w +)|而定的正则表达式。 ]

在哪里,

^(\s*)ERRORHANDLER-匹配随机空间和静态字符串ERRORHANDLER,它们始终是模式的开始。

((?!FUNCTION).)*-贪婪的负面展望*

END[(\s*)(\w+)|;]-匹配END以及以分号结尾的可选字符串。

尽管我确定匹配字符串的方法,但是此正则表达式未正确匹配它。

预期输出:

完全匹配

ERRORHANDLER
WHEN TRUE THEN
    IF SOMETHING THEN
     ELSE
    END IF;
WHEN FALSE THEN
END;

1 个答案:

答案 0 :(得分:0)

因为这里的开始和结尾都是基于单词的,所以需要使用border并合并了2以下的字符,

  • 开头和结尾的单词。
  • 它们之间通过字符和元字符进行量化。

所以对于这个正则表达式,这个问题将匹配\ bERRORHANDLER [\ w | \ W] + END \ b;