我遇到了这个用于检查字母字符串的正则表达式。谁能解释一下它对我有用吗?
/^\pL++$/uD
感谢。
答案 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
享受