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]", "-");
可以通过正则表达式提高以下性能,代码是函数式的,但我想知道是否有任何方法可以 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]", "-");