使用RegEx从java字符串中删除除-和_以外的所有标点符号



我正在尝试使用我在这里找到的方法来替换除-和_之外的所有标点符号,但我只能使用使用负面前瞻性的发布的确切代码:

(?!")\p{punct}
//Java example:
String string = "."'";
System.out.println(string.replaceAll("(?!")\p{Punct}", ""));

我试着:

name = name.replaceAll("(?!_-)\p{Punct}", ""); // which just replaces all punctuation.
name = name.replaceAll("(?!_-)\p{Punct}", ""); // which gives an error.

谢谢。

使用字符类减法(并添加+量词来匹配1个或多个标点字符的块):

name = name.replaceAll("[\p{Punct}&&[^_-]]+", "");

参见Java演示。

[\p{Punct}&&[^_-]]+表示匹配p{Punct}类中除_-以外的任何字符。

您找到的结构也可以使用,但您需要将-_放入字符类中,并使用.replaceAll("(?![_-])\p{Punct}", "").replaceAll("(?:(?![_-])\p{Punct})+", "")

相关内容

  • 没有找到相关文章

最新更新