需要正则表达式解释

时间:2011-01-19 16:52:07

标签: regex

我遇到了这个用于检查字母字符串的正则表达式。谁能解释一下它对我有用吗?

/^\pL++$/uD

感谢。

3 个答案:

答案 0 :(得分:4)

\pL+(有时写为\p{L})匹配一个或多个Unicode字母。我更喜欢\p{L}\pL,因为还有其他Unicode属性,例如\p{Lu}(大写字母),只适用于大括号; \pLu表示“Unicode字母后跟字母u”。

额外的+使量词具有占有性,这意味着它永远不会放弃它匹配的任何字符,即使这意味着整体匹配将失败。在示例正则表达式中,这是不必要的,可以省略。

^$将匹配锚定在字符串的开头和结尾,确保整个字符串必须由字母组成。如果没有它们,正则表达式也会匹配由非字母包围的子字符串。

整个正则表达式由斜杠(/)分隔。在尾随斜杠之后,PHP regex options跟随。 u是Unicode选项(处理Unicode属性所必需的)。 D确保$仅在字符串的最后匹配(否则,如果该字符串以换行符结尾,它也会在字符串中的最后一行之前匹配)。

答案 1 :(得分:2)

看起来像PCRE风味。

根据RegexBuddy

Assert position at the beginning of the string «^»
A character with the Unicode property “letter” (any kind of letter from any language) «\pL++»
   Between one and unlimited times, as many times as possible, without giving back (possessive) «++»
Assert position at the end of the string (or before the line break at the end of the string, if any) «$»

答案 2 :(得分:1)

这看起来像Unicode处理..我在这里发现了一篇很好的文章,似乎解释了\ pL其余的是锚点和重复字符..这也在本网站上有解释:

http://www.regular-expressions.info/unicode.html

享受