java - 需要使用replaceAll方法进行替换

标签 java regex string replaceall

我想要替换字符串,但是我无法解析应该使用哪个正则表达式。

首先我有很多这样的字符串;

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

最后,模式如下;

  • string1.2string 应为 string1_2string
  • 1.2string 应为 1_2string
  • string1.2 应为 string1_2

最佳答案

您需要替换用数字括起来的 .

使用

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

关于java - 需要使用replaceAll方法进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926182/

相关文章:

java - 多次点击在 Android 中不起作用

java - 如何在 Spring AspectJ 中使用 "declare"指令?

正则表达式匹配括号后的所有内容

javascript - 通过与javascript中数组的单词进行比较来连接字符串的单词

mysql - 如何从 MySQL 中的字符串中删除所有非字母数字字符?

php - 匹配至少有一个空格的 Unicode 字符串的正则表达式

java - 从列表中获取最短点条目

java - 托管用 struts2 制作的 java 网站后尝试执行操作类时出错

javascript - 正则表达式无法验证 28 到 31 之间的日期

regex - 在 Ansible 中,如何在使用过滤器的变量定义中使用变量