我想要一个匹配的正则表达式模式,它匹配所有以 4 位或更多数字结尾的地址,但不在
'APT'
、'BOX'
、'APT '
或 'BOX '
之后。
所以它应该符合这些情况
HITME 1234
HITME 12345
HITME1234
但不包括以下情况
BOX 1234
BOX 12345
BOX4044
APT 1234
APT 12345
NONHIT123
NONHIT 123
我做了这个
(?<!(APT |BOX ))([0-9]{4,})$
但它不能正常工作。不知何故仍然符合不不情况。
您的正则表达式
(?<!(APT |BOX ))([0-9]{4,})$
不正确匹配:
BOX 12345
位于 2345
上,因为它前面没有 APT
或 BOX
。相反,它前面有 BOX 1
BOX4044
位于 4044
上,因为它前面没有 APT
或 BOX
。相反,它前面有 BOX
APT 12345
于 2345
。您正在寻找的正则表达式是
^(?!APT|BOX).*?([0-9]{4,})$
,它的分解如下:
^(?!APT|BOX)
字符串开头后面不能跟 APT
或 BOX
.*?
字符串中间有一堆垃圾,尽可能少的字符使模式正常工作(即测试用例中的HITME
)([0-9]{4,})
字符串末尾的匹配数字