我想要替换字符串但是我无法解决应该使用哪个正则表达式。
首先,我有很多这样的字符串;
String rawString = "w1.28-user_request"
然后,我想得到那样的字符串;
w1_28-user_request
正如我所说,我有一些这样的字符串; week1.detailed_design
所以在这种情况下,我会week1_detailed_design
。最后,我只需要处理w1.23_design_req-open
PS:用户,请求等只是一个示例命名对象
请注意,以下用法对我没用,因为除了上述情况我已经有"."
。例如;
user.request_updated
所以我只需要知道如何处理这个案例:w2.25-update_request
rawString.replaceAll("\\.","_"); // not useful
最后,模式如下;
答案 0 :(得分:1)
您需要替换数字附带的.
。
使用
rawString = rawString.replaceAll("(\\d)\\.(\\d)","$1_$2");
模式详情:
(\\d)
- 捕获到第1组的数字(从替换模式通过$1
引用)\\.
- 一个文字点(\\d)
- 捕获到第2组的数字(从替换模式通过$2
引用)请参阅Java demo:
List<String> strs = Arrays.asList("string1.2string", "string1.2", "1.2string");
for (String str : strs)
System.out.println(str.replaceAll("(\\d)\\.(\\d)", "$1_$2"));
输出:
string1_2string
string1_2
1_2string