gpt4 book ai didi

java - Java 正则表达式中强制最后一个单词和可选的前面单词/短语

转载 作者:行者123 更新时间:2023-11-30 06:19:33 25 4
gpt4 key购买 nike

我在使用 Java 中的以下正则表达式时遇到问题。我删除了双引号,以使其更具可读性。由于缺乏更好的词,我还将每个“组件”放在单独的行上(但实际的表达式会将行合并,行之间没有空格):

(?:\bIN(?:\s*,)?)?
(?:\bVOL.?(?:U[NM]TARY)?)?(?:\s*,)? \b(?:LIQ'N|LIQ|LQD|LIQD|LIQN|LIQUIDA|LIQUIDATION|REC|RECEIVERSHIP|RECSHIP|WINDING UP)\b

本质上,最后一个单词/表达式是强制性的,但前面的单词 IN 和 VOLUNTARY (或其某些版本)是可选的。以下是我希望此模式匹配的一些字符串示例:

IN VOLUNTARY LIQUIDATION
IN VOL LIQ
IN VOL.LIQ
IN LIQUIDATION
IN LIQ
VOL LIQ
VOL.LIQ
VOL. LIQ
IN     LIQ
IN      VOL      LIQUIDATION
IN LIQUIDATION
IN LIQ
IN, VOL. LIQ
IN VOLUMTARY, LIQN
LIQUIDATION
RECEIVERSHIP

这些短语将被混合到字符串中,我需要将它们删除。这些短语通常用 []( and ) 括起来,但这并不确定,这就是我使用单词边界标记的原因。

我无法检测前面的单词,仅匹配最后一个单词。请注意,正则表达式的性能并不是我主要关心的问题(即,如果有必要,这将是一个可能需要时间的后台进程)。任何正则表达式专家都可以帮我解决这个问题吗?

最佳答案

使用 regex101 调试器可以看到序列 \s*, 失败,也许您想要 [\s,]*:替换 (?:\s*|,)?[\s,]*

original regex

the functionning regex

关于java - Java 正则表达式中强制最后一个单词和可选的前面单词/短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48463621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com