有没有办法转换String
"m1, m2, m3"
Run Code Online (Sandbox Code Playgroud)
以下
"m1/build, m2/build, m3/build"
Run Code Online (Sandbox Code Playgroud)
只能通过使用String.replaceAll(regex, replacement)方法?
到目前为止,这是我最好的尝试:
System.out.println("m1, m2, m3".replaceAll("([^,]*)", "$1/build"));
>>> m1/build/build, m2/build/build, m3/build/build
Run Code Online (Sandbox Code Playgroud)
如您所见,输出不正确.但是,在Linux的sed命令中使用相同的正则表达式可以提供正确的输出:
echo 'm1, m2, m3' | sed -e 's%\([^,]*\)%\1/build%g'
>>> m1/build, m2/build, m3/build
Run Code Online (Sandbox Code Playgroud)
如果从另一端看问题(非常简单!),你会得到一个表达式来寻找终结符,而不是内容.这个表达式效果更好:
System.out.println("m1, m2, m3".replaceAll("(\\s*(,|$))", "/build$1"));
Run Code Online (Sandbox Code Playgroud)
以下是ideone上此程序的链接.
([^,]*)可以匹配空字符串,甚至可以匹配两个空格之间。尝试([^,]+)或(\w+)。
另一个小注意事项 - 您可以用来$0引用整个匹配的字符串,避免捕获组:
System.out.println("m1, m2, m3".replaceAll("\\w+", "$0/build"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |