我在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 VOL LIQ
IN VOL.LIQ
在液体中 在LIQ中 VOL LIQ
VOL.LIQ
VOL。 LIQ
IN LIQ
IN VOL清算
在液体中 在LIQ中 IN,VOL。 LIQ
在体积,LIQN
清算
接管
这些短语将被混合成字符串,我需要删除它们。这些短语通常会附加[
和]
或(
和)
,但这并不确定,这就是我使用单词边界标记的原因。< / p>
我在检测前面的单词时遇到问题,只有最后一个单词匹配。请注意,正则表达式的性能不是我的主要关注点(即,如果需要,这将是一个可以花费时间的后台进程)。任何正则表达式大师都可以帮我解决这个问题吗?
答案 0 :(得分:1)