Java 正则表达式匹配除单个表达式之外的任何内容

标签 java regex

我试图仅使用 replaceAll() 方法和单个正则表达式来替换除特定表达式(包括 java 中的数字)之外的所有内容。

给定字符串P=32 N=5 M=2我想独立提取每个变量。 我可以将表达式 N=5 与正则表达式 N=\d 相匹配,但我似乎找不到可以匹配除 N 之外的任何内容的逆表达式=\d,其中 x 可以是任何数字。

我不想使用PatternMatcher,但仅使用正则表达式解决此问题。因此,对于 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 demoregex demo .

详细信息

  • \s* - 0+ 个空格
  • \b - 单词边界
  • (?!N=\d) - 紧邻右侧,不应有 N= 和任何数字
  • \w+ - 1+ 个字母/数字/_
  • = - = 符号
  • \d+ - 1+ 位数字。

关于Java 正则表达式匹配除单个表达式之外的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58858148/

相关文章:

java - JSP访问中的HashMap<HashMap<Integer, Integer>, String>

正则表达式提取 bash shell 中引号中的所有内容?

python - 字典中列表的嵌套循环

java - 将 Java 代码部署到生产环境的最佳方法是什么?

java - 选择查询以查找连续的最大日期

java - 如何让Java驱动/控制webkit/gecko?

java - @ServiceActivator如何在Spring Boot中从属性文件读取inputChannel?

python - 用于解析所有行的正则表达式以字母数字代码开头并以价格结尾

javascript - 按后缀删除单词

php - 在换行符中使用 preg_match_all