正则表达式\ p {L}和\ p {N}

Die*_*rdk 94 regex xml character-class

我是正则表达式的新手,并且给出了以下正则表达式:

(\p{L}|\p{N}|_|-|\.)*
Run Code Online (Sandbox Code Playgroud)

我知道*的意思和| 意思是"或"而那个\逃脱.

但我不知道是什么\p{L}\p{N}意味着什么.我搜索了Google,没有结果......

有人能帮我吗?

Cer*_*rus 140

\p{L}匹配"字母"类别中的单个代码点.
\p{N}匹配任何脚本中的任何类型的数字字符.

资料来源:regular-expressions.info

如果您打算使用正则表达式,我建议将该网站加入书签,这非常有用.

  • 拉斐尔,我不同意你可以用'{a-zA-Z}`安全地替换`\ p {L}`.例如,`{a-zA-Z}`将不匹配任何重音字符,例如`é`,它在法语中全部使用.因此,如果您确定只处理英语,那么这些只能安全地更换. (11认同)

Tim*_*ker 26

这些是Unicode属性快捷方式(\p{L}对于Unicode字母,\p{N}对于Unicode数字).它们受.NET,Perl,Java,PCRE,XML,XPath,JGSoft,Ruby(1.9及更高版本)和PHP(自5.1.0以来)支持

无论如何,这是一个非常奇怪的正则表达式.当字符类足够时,你不应该使用交替:

[\p{L}\p{N}_.-]*
Run Code Online (Sandbox Code Playgroud)