首页 > 解决方案 > 正则表达式 - 我需要替换所有数字,但特定的 3 位数字

问题描述

我想用“X”替换日志上的所有数字,但我想保留 HTTP 状态代码以供参考。

我一直在尝试不同的方法。他们都没有工作。

str.replaceAll("(?!5\d\d|4\d\d)\d{3}", "X") //Didn't worked

// Error trying to POST to /shipments/X5X5X/select?caller.id=XX592: 500 INTERNAL_SERVER_ERROR

我需要它是:

从:

Error trying to POST to /shipments/28056415973/select?caller.id=116089592: 500 INTERNAL_SERVER_ERROR

到:

Error trying to POST to /shipments/XXXX/select?caller.id=XXXX: 500 INTERNAL_SERVER_ERROR

标签: javaregex

解决方案


如果您要选择的数字后面永远不会有空格和大写字符 AZ,您可以使用负前瞻:

\b[0-9]+\b(?! [A-Z])

解释

  • \b[0-9]+\b在单词边界之间匹配 1+ 个数字
  • (?!负前瞻,断言右边的不是
    • [A-Z]匹配空格和大写字符 AZ
  • )关闭前瞻

正则表达式演示| Java 演示


推荐阅读