java - 正则表达式 - 我需要替换所有数字但特定的 3 位数字

标签 java regex

我想用“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

最佳答案

如果您要选择的数字后面永远没有空格和大写字符 A-Z,您可以使用否定先行:

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

解释

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

Regex demo | Java demo

关于java - 正则表达式 - 我需要替换所有数字但特定的 3 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57877003/

相关文章:

java - 如何使用共享资源与其他线程通信?

用于以正斜杠开头后跟字母数字字符且没有空格的字符串的 javascript 正则表达式

regex - OCLinEcore 和 Regex 创建有效的 IPv4 字符串

php - 用 BR 标签替换换行符,但只在 PRE 标签内

java - Gson - 避免每个 Action 有多个类

java - TLS Android 的问题 - Netty

python - 不同行的文本替换

Ruby 正则表达式不匹配

java - Android 无法创建 EC KeyPair

JavaFX - 当尝试使用 Apache POI 打开解压的 .xlsx 文件时,为什么会收到 "Unexpected end of ZLIB input stream"?