正则表达式替换分隔列表中的特定单词/短语

问题描述 投票:0回答:1

我正在尝试让 Java 正则表达式替换逗号分隔列表中的特定短语。它还应该匹配/替换前导逗号以及任何前导/尾随空格。对于这个解决方案,我必须严格使用基于 Java 的正则表达式。

例如,我有一个字符串

BIG BOAT     , GREEN CAR,BIG BOAT, YELLOW TRUCK, BIG BOAT, AMAZON ECHO,      BIG BOAT    , BLUE CAR , BIG BOAT BLUE, TABLE, GLASSES, BIG BOAT
并且我有正则表达式

(?:^|,\s*)BIG BOAT(?:$|[^,]*)

这似乎在大多数情况下都有效。它匹配

BIG BOAT
的所有精确实例,但错误地匹配
BIG BOAT BLUE

java regex regex-replace
1个回答
0
投票

您最初的正则表达式接近您想要实现的目标。我刚刚将结尾部分

(?:$|[^,]*)
更改为
\s*(?=,|$)
。基本上在结束位中,您想要匹配每个
BIG BOAT
后跟零个或多个空格,然后检查它后面是否跟有逗号或位于字符串末尾。

像这样,你的正则表达式匹配:

  • 最终的前导逗号
  • 零个或多个空格
  • 大船
  • 零个或多个空格

这是正则表达式:

(?:^|,\s*)BIG BOAT\s*(?=,|$)

这里是正则表达式的链接,位于 regex101

© www.soinside.com 2019 - 2024. All rights reserved.