我正在尝试让 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
。
您最初的正则表达式接近您想要实现的目标。我刚刚将结尾部分
(?:$|[^,]*)
更改为\s*(?=,|$)
。基本上在结束位中,您想要匹配每个 BIG BOAT
后跟零个或多个空格,然后检查它后面是否跟有逗号或位于字符串末尾。
像这样,你的正则表达式匹配:
这是正则表达式:
(?:^|,\s*)BIG BOAT\s*(?=,|$)
这里是正则表达式的链接,位于 regex101