java Dash 版本中 unicode 的正则表达式

Regular expression for unicode in java Dash version

可以通过正则表达式提高以下性能,代码是函数式的,但我想知道是否有任何方法可以 select unicode 中存在的可能破折号标准化我的破折号

字数:

48553−FS002
48553-FS002
48553 FS002
48553-FS002-ESD12

Java

String reference = "48553−FS002";
String separador = reference.replaceFirst ( "\w+(\W)?\w+", "" );
if(!separator.equals ( " " )) {
   reference = reference.replaceAll ( separator, "-" );
}

或者您可以搜索 unicode 代码,我正在阅读以下内容:dash, but i haven't managed to make it work Java Regex Unicode

如果您需要匹配 space 以外的任何非单词,您可以使用

reference = reference.replaceAll("[^\w ]", "-");

或者,用字符class减法:

reference = reference.replaceAll("[\W&&[^ ]]", "-");

您可以使用以下模式来匹配连字符或破折号之类的模式:

[\p{Pd}\u00AD\u2212]

这里,

  • \p{Pd} - 匹配任何 Punctuation, Dash 符号
  • \u00AD - 匹配软连字符
  • \u2212 - 匹配减号。

如果您知道您的字符串只包含单词字符和分隔符(看起来确实如此),那么您可以只使用

reference = reference.replaceAll("[^ \w]", "-");