java - 嵌套的正则表达式和替换

标签 java regex

我有这样的字符串 <p0=v0 p1=v1 p2=v2 ....>我想交换 pXvX有类似 <v0=p0 v1=p1 v2=p2 ....> 的东西使用正则表达式。 我只想要 <> 中的对进行交换。

我写道:

Pattern pattern = Pattern.compile("<(\\w*)=(\\w*)>");
Matcher matcher = pattern.matcher("<p1=v1>");
System.out.println(matcher.replaceAll("$2=$1"));

但它只适用于一对 pX=vX 有人可以解释我如何编写适用于多对的正则表达式吗?

最佳答案

简单,使用组:

String input = "<p0=v0 p1=v1 p2=v2>";
//                                   |group 1
//                                   ||matches "p" followed by one digit
//                                   ||      |... followed by "="
//                                   ||      ||group 2
//                                   ||      |||... followed by "v", followed by one digit
//                                   ||      |||          |replaces group 2 with group 1,
//                                   ||      |||          |re-writes "=" in the middle
System.out.println(input.replaceAll("(p[0-9])=(v[0-9])", "$2=$1"));

输出:

<v0=p0 v1=p1 v2=p2>

关于java - 嵌套的正则表达式和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22021129/

相关文章:

java - 如何删除从移动设备清除应用程序数据后触发的通知

java - 解决 Codility PermMissingElem 测试的正确方法是什么? ( java )

java - Google OAuth2 PlayGround 返回 "Unauthorized Client"

python - 从 Latex 代码文件中提取所有 Latex 命令

用于匹配多词名称的 Python 正则表达式

java - 二进制字符串正则表达式控制位置

regex - 删除文件每行末尾的制表符

java - 如何设置Oracle JDK支持FIPS模式

java - 内存中的对象搜索优化

regex - 正则表达式匹配所有内容但保留一些指定的匹配项