我正在尝试创建一个正则表达式来查找以下字符串:
AGK-XL.
有时在此字符串之前和之后还有其他字符通常无害,除非字符串前面有以下模式:
NOT-
我需要删除/忽略这些情况。 这就是我的尝试:
^[^N][^O][^T][^\-]AGK-XL\.(\s|\W|$)
但是当字符串前面恰好有4个字母时,它似乎只匹配。除NOT-
之前AGK-XL.
之外的任何其他模式如何表示无害?
感谢任何提示。 编辑:我在VBA atm中使用正则表达式。
答案 0 :(得分:2)
如果您不能使用花哨的后视镜,当您需要匹配我们不想要的东西时,您可以依赖捕获机制,并且匹配并捕获您想要的内容。请参阅The Best Regex Trick Ever at rexegg.com。
但是,在这种情况下,您可以匹配并捕获NOT-AGK-XL.
(以便稍后可以使用$1
反向引用进行还原),并且只匹配您AGK-XL.
的所有其他匹配项将删除。使用交替运算符|
来匹配两个备选方案:
(NOT-AGK-XL\.(?!\w))|AGK-XL\.(?!\w)
请参阅demo
注意我将(\s|\W|$)
替换为(?!\w)
,即 - 恕我直言 - 更好的字边界检查。