我需要你们的帮助伙计们!这是一个棘手的java regex问题,几个小时来一直在寻找解决方案.下面是:
在下面的文字中,我想匹配“船”这个词.
我有一艘船要卖。它有额外的船螺旋桨,但没有船拖车(船是相当大,所以你可能需要一个船螺旋桨拖车)。我曾经有一堆船,但随着时间的推移,我对一艘船的热情逐渐减弱。我不认为人们会对一堆船感兴趣,但这是我最后一艘船,所以耶耶!)
以下各部分应匹配:
以下部分不应匹配(甚至部分不匹配):
我在regex 101 ( https://regex101.com/r/o6S4SP/22 )中获得了这个示例设置,但是它没有正常工作:-(
PS:我使用Regex101作为示例,但是在Java语法中不支持“(跳过)(失败)”。
希望任何人都能帮忙:)
发布于 2019-10-21 18:29:18
您可以在Java中使用以下正则表达式,该正则表达式具有受限的宽度查找模式(支持限制量词):
(?<!\bfor\sa\s(?:bunch\sof\s){0,1})(?:\bbunch\s+of\s+)?\bboats?\b(?:\s+propellers?)?+(?!\s+trailers?\b)见。
在爪哇,
s = s.replaceAll("(?<!\\bfor\\sa\\s(?:bunch\\sof\\s){0,1})(?:\\bbunch\\s+of\\s+)?\\bboats?\\b(?:\\s+propellers?)?+(?!\\s+trailers?\\b)", "<b>$0</b>");Regex详细信息
(?<!\bfor\sa\s(?:bunch\sof\s){0,1}) -如果在当前位置的左侧有\bfor\sa\s - for、空格、a、whitespace(?:bunch\sof\s){0,1} -0或1出现bunch、空格、of、whitespace的情况(即可选事件),则会导致匹配失败。
(?:\bbunch\s+of\s+)? --一个可选的bunch、1+白空间、of、1+ bunch--一个完整的单词boat或boats (?:\s+propellers?)?+ --一个1+白色空间的可选出现,后面跟着propeller或propellers。注意:在这里,只有在这个组pattern.(?!\s+trailers?\b)之后才能执行下一次查找,注意到:在当前位置的右侧有1+空格,然后是trailer或trailers作为一个单词时,?+拥有式量词会导致匹配失败。https://stackoverflow.com/questions/58454252
复制相似问题