正则表达式匹配,如果两边都没有某些字符,但是两边都不包含这些字符

时间:2018-10-27 20:08:35

标签: regex

我正试图提出一个匹配MY_EXAMPLE的正则表达式,但是如果它的一侧或两侧都有A-Z_',我不希望它与之匹配。

例如:

MY_EXAMPLE
(MY_EXAMPLE)
abcdefMY_EXAMPLEabcdef
'MY_EXAMPLE'
MY_EXAMPLE_
MY_EXAMPLE_EXAMPLE
HELLO_MY_EXAMPLE
MY_EXAMPLEABCDEF

仅前三个应匹配,并且仅应匹配MY_EXAMPLE部分。

到目前为止,我最好的是:

[^A-Z'_]MY_EXAMPLE[^A-Z'_]

这与第二个和第三个匹配,但它也与我不匹配的任何一个字符匹配,这也是为什么第一个不匹配的原因,因为我的正则表达式还说一个字符必须存在于任一侧。

这是一个图像示例: 左边是我的正则表达式匹配的东西,右边是我想要的东西 匹配。image

1 个答案:

答案 0 :(得分:0)

您的正则表达式需要否定的展望和否定的展望。您可以使用此正则表达式,

(?<![A-Z_'])(MY_EXAMPLE)(?![A-Z_'])

第1组仅匹配MY_EXAMPLE

演示,https://regex101.com/r/1JVhNg/1