正则表达式在回望期间匹配

时间:2018-11-13 20:57:57

标签: java regex

我正在使用下面的正则表达式来匹配字符串;我期待以下结果

正则表达式^.*(?<!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的后面看起来很象。 我该如何解决?

1 个答案:

答案 0 :(得分:1)

失败是因为您的字符串中ghi不在.xyz.之前。 Java(像许多其他正则表达式引擎一样)不支持可变长度负长度后向断言。

您可以改用以下否定的超前表达:

^(?!.*\b(?:abc|def|ghi)\b).*\.xyz\.org.*$

RegEx Demo