为什么 Unicode 字符“减号”(U+2212) 不在正则表达式 unicode 组 \p{Pd} (Dash_Punctuation) 中?

Sia*_*hei 3 regex unicode

我正在尝试收集所有破折号以在分析原始文本数据时使用它。我发现Unicode正则表达式\\p{Pd}应该匹配所有大小写,但毕竟,结果证明这个字符\xe2\x88\x92不匹配!

\n\n

以下是有关此字符的更多信息:\n https://www.fileformat.info/info/unicode/char/2212/index.htm

\n\n

这是一个错误还是一个功能?实际上这并不是什么有用的东西。

\n

Jig*_*ake 5

Unicode 字符U+2212 MINUS SIGN与数学相关的符号,可能不被视为标点符号;例如,它匹配\p{Math}但不匹配\p{Punctuation}(包括\p{Dash_Punctuation})。

您可能想尝试使用\p{Dash}它,并检查它是否满足您的所有需求......

参考:U+2212 的属性

编辑

以下是具有 Unicode 属性的所有字符的“官方”列表Dashhttps://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Dash=Yes:],包括该U+2212 MINUS SIGN字符。

在 Unicode 12.0 中,JavaScript 正则表达式:

/\p{Dash}/u

相当于:

/[\u002D\u058A\u05BE\u1400\u1806\u2010\u2011\u2012\u2013\u2014\u2015\u2053\u207B\u208B\u2212\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D]/