Java正则表达式:匹配以fn-开头但排除特定后缀的行
正则表达式匹配问题解决方案
需求:匹配所有以fn-开头的行,但要排除连字符后是foobar或fubar的完整行。
匹配示例:
fn-bar fn-foo fn-foobarb
不匹配示例:
fn-foobar fn-fubar xn-blah
你当前用的正则(fn)-(?!(fubar|foobar)$)没法匹配整行,问题在于这个正则只覆盖了前缀部分,没限定行首行尾,也没匹配整行剩余内容。
修正后的正则:
^fn-(?!(fubar|foobar)$).+$
规则解释:
^:锁定行的起始位置,确保匹配的是行首开始的fn-fn-:匹配固定前缀(?!(fubar|foobar)$):负向前瞻断言,排除前缀后直接是foobar或fubar且刚好到行尾的情况.+$:匹配前缀之后的任意非空内容直到行尾,确保整行被选中
这样就能精准匹配符合要求的整行了。
内容的提问来源于stack exchange,提问作者RaGe
相关产品推荐
相关产品推荐

