【问题标题】:Removing all punctuation except - and _ from a java string using RegEx使用 RegEx 从 java 字符串中删除除 - 和 _ 之外的所有标点符号
【发布时间】:2016-10-26 15:47:04
【问题描述】:

我正在尝试使用我在此处找到的方法替换除 - 和 _ 之外的所有标点符号,但我只能使用发布的使用否定前瞻的确切代码来让它工作:

(?!")\\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.

谢谢。

【问题讨论】:

  • 如果你碰巧登录了,如果它对你有用,请考虑接受答案。

标签: java regex string character-class


【解决方案1】:

使用character class subtraction(并添加+ 量词以匹配1 个或多个标点字符的块):

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

请参阅Java demo

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

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

【讨论】:

猜你喜欢
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 2018-05-13
  • 1970-01-01
  • 2017-08-25
  • 2018-06-06
  • 1970-01-01
相关资源
最近更新 更多