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

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

我正在尝试让 Java 正则表达式替换逗号分隔列表中的特定短语。
例如,我有一串

"BOAT, AMAZON ECHO, TABLE, GLASSES"
,我有正则表达式

"BOAT(\s*)?,?(\s*)?"

适用于

"BOAT,"
"BOAT,    "
"BOAT   ,  "
,但在以下情况下不起作用:

  • BOAT
    是列表中唯一的项目
  • "CAR, SAILBOAT, TEST, BOAT,"
    将取代
    BOAT
     中的 
    SAILBOAT
  • 列表中有该单词/短语的多个实例
  • 如果前面有列表项,则不会替换前面的逗号
java regex regex-replace
1个回答
0
投票

为什么不直接将

replaceAll
与单词边界定界符元字符 (
\\b
) 一起使用。

String s =  "BOAT, AMAZON ECHO, SAILBOAT,TABLE, EYEGLASSES,    GLASSES";
s = s.replaceAll("\\bBOAT\\b", "Foo");
System.out.println(s);
s = s.replaceAll("\\bGLASSES\\b", "Bar");
System.out.println(s);

打印

Foo, AMAZON ECHO, SAILBOAT,TABLE, EYEGLASSES,    GLASSES
Foo, AMAZON ECHO, SAILBOAT,TABLE, EYEGLASSES,    Bar
© www.soinside.com 2019 - 2024. All rights reserved.