sea*_*nEd 2 java regex string character-class
我正在尝试使用在这里找到的方法来替换除-和_之外的所有标点符号,但我只能使用所发布的确切代码使用负前瞻来使其在“上工作:
(?!")\\p{punct}
//Java example:
String string = ".\"'";
System.out.println(string.replaceAll("(?!\")\\p{Punct}", ""));
Run Code Online (Sandbox Code Playgroud)
我试过了:
name = name.replaceAll("(?!_-)\\p{Punct}", ""); // which just replaces all punctuation.
name = name.replaceAll("(?!\_-)\\p{Punct}", ""); // which gives an error.
Run Code Online (Sandbox Code Playgroud)
谢谢。
使用字符类减法(并添加一个+量词以匹配1个或多个标点字符的块):
name = name.replaceAll("[\\p{Punct}&&[^_-]]+", "");
Run Code Online (Sandbox Code Playgroud)
请参阅Java演示。
该[\\p{Punct}&&[^_-]]+方法匹配\p{Punct}类中的任何字符,除了_和-。
您也可以使用找到的结构,但是您需要将-和_放在字符类中,并使用.replaceAll("(?![_-])\\p{Punct}", "")或.replaceAll("(?:(?![_-])\\p{Punct})+", "")。
| 归档时间: |
|
| 查看次数: |
1557 次 |
| 最近记录: |