当前位置: 首页 > 知识库问答 >
问题:

java正则表达式用否定的组替换所有

竺和洽
2023-03-14

我正在尝试使用字符串。用regex替换all()方法,只保留字母字符和['-\]。我试图用一个空字符串替换每个既不是字母也不是上述字符的字符。

到目前为止,我已经尝试过这样的东西(在不同的变体中),它正确地保留字母,但替换了我想要保留的特殊字符:

current = current.replaceAll("(?=\\P{L})(?=[^\\'-_])", "");

共有3个答案

孟洋
2023-03-14

你的正则表达式太复杂了。只需指定要保留的字符,并使用^进行否定,因此[^a-z'.-]表示“除此之外的任何内容”。

public class Replacer {
    public static void main(String[] args) {
        System.out.println("with 1234 &*()) -/.,>>?chars".replaceAll("[^\\w'_-]", ""));
    }
}
郎华皓
2023-03-14

你不需要向前看,只需要使用否定正则表达式:

current = current.replaceAll("[^\\p{L}'_-]+", "");

[^\\p{L}'.-]将匹配任何非字母(unicode)或单引号、下划线或连字符的内容。

邹开畅
2023-03-14

让它更简单:

current  = current.replaceAll("[^a-zA-Z'_-]", "");

说明:将a中的任何字符匹配到za中的任何字符匹配到z-replaceAll()方法将用零替换任何匹配的字符。

测试输入:“a_zE'R”-z4r@m“Output:a_zE'R-zrm

 类似资料:
  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 问题内容: 有什么方法可以用捕获组的已修改内容替换正则表达式? 例: 我想用$ 1乘以3代替所有出现的情况。 编辑: 看起来好像出了点问题:( 如果我用 引发IllegalStateException:找不到匹配项 但 工作正常,但我不能更改$ 1 :( 问题答案: 要获得第一场比赛,请使用。之后,你可以用来引用此第一个匹配项,并将所有匹配项替换为第一个匹配值乘以3。 如果你想将每个匹配项替换为该

  • 问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。

  • 通过好奇心,有没有办法用Java Stream编写它?

  • Change is inevitable, except from vending machines. — Robert C. Gallagher Puppet 的 regsubst 函数提供了一种处理文本的简单方法, 用于在字符串中查找和替换,或者从字符串提取匹配的模式。 例如,我们通常需要对从 facter 或者从外部程序获得的数据做这样的处理。 在本例中将会看到如何使用 regsubst 提