我试图仅使用 replaceAll()
方法和单个正则表达式来替换除特定表达式(包括 java 中的数字)之外的所有内容。
给定字符串P=32 N=5 M=2
我想独立提取每个变量。
我可以将表达式 N=5
与正则表达式 N=\d
相匹配,但我似乎找不到可以匹配除 N 之外的任何内容的逆表达式=\d
,其中 x 可以是任何数字。
我不想使用Pattern
或Matcher
,但仅使用正则表达式解决此问题。因此,对于 x、y、z 是任何数字,我希望能够替换字符串中除表达式 N=y 之外的所有内容 P=x N=y M=z
:
String input = "P=32 N=5 M=2";
output = input.replaceAll(regex, "");
System.out.println(output);
// expected "N=5"
最佳答案
您可以使用
s = s.replaceAll("\\s*\\b(?!N=\\d)\\w+=\\d+", "").trim();
请参阅Java demo和 regex demo .
详细信息
\s*
- 0+ 个空格\b
- 单词边界(?!N=\d)
- 紧邻右侧,不应有N=
和任何数字\w+
- 1+ 个字母/数字/_
=
-=
符号\d+
- 1+ 位数字。
关于Java 正则表达式匹配除单个表达式之外的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58858148/