关于replaceAll()的正则表达式

时间:2013-12-10 05:28:27

标签: java regex

我想转换这个字符串

M,L,XL,XXL

size M,size L,size XL,size XXL

使用 replaceAll()方法。有可能吗?

3 个答案:

答案 0 :(得分:5)

您可以使用正向前瞻来实现此目的。

String s  = "M,L,XL,XXL";
s = s.replaceAll("(?=(\\w+))\\b", "size ");
System.out.println(s); // size M,size L,size XL,size XXL

请参阅Live demo

正则表达式:

(?=            look ahead to see if there is:
 (             group and capture to \1:
  \w+          word characters (a-z, A-Z, 0-9, _) (1 or more times)
 )             end of \1
)              end of look-ahead
\b             the boundary between a word char (\w) and not a word char

答案 1 :(得分:3)

在逗号上玩技巧,然后更快

"M,L,XL,XXL".replaceAll("M", "size M").replaceAll(",",",size ")

答案 2 :(得分:2)

我建议如下:

"M,L,XL,XXL".replaceAll("((?:\\w+)(?:,|$))","size $1")

http://fiddle.re/zrq88所示。 $1是一个“反向引用”,指的是第一个“捕获组”。捕获组是括号中表达式匹配的任何文本,但有一些例外(例如,当左括号后跟?:时)。

有关详细信息,请参阅http://www.regular-expressions.info/backref.html