我正在使用下面的正则表达式来匹配字符串;我期待以下结果
正则表达式^.*(?<!abc)(?<!def)(?<!ghi).xyz.co.*
不匹配
ghi.xyz.org
ghi-hipqr.xyz.org
abc-hipqr.xyz.org
匹配
qrs.xyz.org
qrs-hipqr.xyz.org
但是,ghi-hipqr.xyz.org
与正则表达式匹配(它不应该与正则表达式匹配,因为在字符串中存在字符串ghi的后面看起来很象。
我该如何解决?
答案 0 :(得分:1)
失败是因为您的字符串中ghi
不在.xyz.
之前。 Java(像许多其他正则表达式引擎一样)不支持可变长度负长度后向断言。
您可以改用以下否定的超前表达:
^(?!.*\b(?:abc|def|ghi)\b).*\.xyz\.org.*$