java - 如何使用一种正则表达式模式使字符串成为 Java 中的另一种正则表达式模式?

标签 java regex

提供一个简单的示例可能会产生我不要求的解决方案,并且替代解决方案将不起作用,因为我有更复杂的模式需要解决。

假设您有一个字符串 123.321

这个字符串可以用正则表达式表示为[0-9]*\\.[0-9]* 我想做的是替换“。”用“,”得到123,321。

因此,我希望正则表达式模式 [0-9]*\\.[0-9]* 成为正则表达式模式 [0-9]*,[0- 9]*

是否可以指示两个正则表达式模式并使与第一个模式匹配的字符串成为与第二个模式匹配的字符串?

我该怎么做?

最简单的解决方案是什么?

最佳答案

您可以使用 \\d* 来匹配可选数字,并将数字匹配与 () 分组。然后使用String.replaceAll(String, String)喜欢

String str = "123.321";
if (str.matches("\\d*\\.\\d*")) {
  str = str.replaceAll("(\\d*)\\.(\\d*)", "$1,$2");
}
System.out.println(str);

输出是(根据要求)

123,321

关于java - 如何使用一种正则表达式模式使字符串成为 Java 中的另一种正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458284/

相关文章:

java - 如何在 java 文件中为我的文件提供相对路径?

javascript - 匹配没有至少两个分号的左括号和右括号

javascript - 匹配 JS 中除反向引用之外的所有字符

regex - 关于 perl 中的 chdir,我如何回到上一个目录

java - 将对象命名为与类名相同但没有大写字母是否违反 Java 约定?

java - 如何使用 stream().sorted() 对带有对象的 ArrayList 进行排序

java - 使用 Spring 进行海量多文件上传

java - java中浅拷贝和深拷贝演示的例子

java - 摩擦正则表达式 : matching a char except when after by another char

regex - 继续在 perl 中换行