2013-02-15 785 views
54

我是新来的正则表达式,并已获得以下正则表达式:正则表达式 p {L}和 p {N}

(\p{L}|\p{N}|_|-|\.)* 

我知道*手段|意味着“或”,并且\逃脱。

但是我不知道什么\p{L}\p{N}的意思。我已经搜索谷歌它,没有结果...

有人可以帮助我吗?

+0

我用Google搜索它,但我得到了[这个结果](https://stackoverflow.com/a/14891168/507738)。 – 2017-07-11 08:24:45

回答

84

\p{L}与类别“letter”中的单个代码点匹配。
\p{N}匹配任何脚本中的任何类型的数字字符。

来源:regular-expressions.info

如果你要使用正则表达式的工作很多,我建议书签该网站,这是非常有用的。

+0

thx为快速回答:)。但不应该正则表达式匹配10吗?我试过一个在线正则表达式匹配器:http://regexpal.com/ – Diemauerdk 2013-02-15 09:10:37

+0

@ user1093774:我不认为[regexpal](http://regexpal.com/)支持'\ p {}',但是,是的,它应该匹配。 – Cerbrus 2013-02-15 09:12:17

+1

这种语法特别适用于现代Unicode正则表达式实现,并非所有解释器都能识别。您可以安全地用{a-zA-Z}(ascii表示法)或{\ w}(perl/vim表示法)替换\ p {L};和\ p {N}的{0-9}(ascii)或{\ d}(perl/vim)。如果你想匹配所有这些,只需要:{a-zA-Z0-9} +或{\ w \ d} + – 2015-08-18 02:46:16

17

这些是Unicode属性快捷键(Unicode字母为\p{L},Unicode字母为\p{N})。它们支持.NET,Perl,Java,PCRE,XML,XPath,JGSoft,Ruby(1.9及更高版本)和PHP(since 5.1.0

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

[\p{L}\p{N}_.-]* 
+0

它的正则表达式在xml中 - 我还没有修改过正则表达式:) – Diemauerdk 2013-02-15 09:13:51

+0

除了使用捕获括号的事实之外,RE实际上会编译成相同的东西(好吧,在任何支持'\ p { ...}首先是转义序列风格)。 – 2013-02-15 09:34:45

+0

,看起来像XRegExp unicode插件。如果是这样的话,将是任何语言中的任何字母数字 – Tim 2015-10-30 19:10:09

相关问题