【问题标题】:Regex to replace all special characters except asterisk and escaped asterisk正则表达式替换除星号和转义星号以外的所有特殊字符
【发布时间】:2026-01-16 00:30:01
【问题描述】:

我正在寻找一个正则表达式来替换除*\* 之外的所有特殊字符。 这个正则表达式 sn-p input.replaceAll('/[^a-zA-Z0-9*]*/', '') 转换除 * 之外的所有其他字符,但我也试图忽略 \*

input.replaceAll('/[^a-zA-Z0-9*\\\*]*/', '') 忽略\* 但它也单独忽略\,我试图获得一个将\* 视为组合并替换休息的表达式。

【问题讨论】:

  • 没有\*这样的字符
  • 假设您有类似*,\*,\\* 的文本。替换结果应该是*\***\*\* 还是其他?
  • @Pshemo 应该是*\*\*
  • 不是 groovy 开发,但在 Java 中,您可能可以使用 replaceAll("[^a-zA-Z0-9\\\\*]|\\\\(?![*])", "") 中的一些东西。简而言之:(规则 1)删除除 a-z A-Z 0-9 \ * 之外的每个 单个字符(规则 2)仅在 \ 后面没有 @ 时删除987654342@.
  • 感谢@Pshemo 的正则表达式和解释,这就是我要找的。​​span>

标签: java regex groovy regexp-replace


【解决方案1】:

试试这个表达式:

(?:(?!\\\*)(?!\*)(?![a-zA-Z0-9]).)+

在此处查看演示:https://regexr.com/50t1o

【讨论】: