这个正则表达式是啥意思 - “\pLu”?
Posted
技术标签:
【中文标题】这个正则表达式是啥意思 - “\\pLu”?【英文标题】:What does this regexp mean - "\pLu"?这个正则表达式是什么意思 - “\pLu”? 【发布时间】:2014-11-16 14:38:04 【问题描述】:我在 c# 中偶然发现了这个正则表达式,我想移植到 javascript,但我不明白以下内容:
[-.\pLu\pLl0-9]+
我遇到困难的部分当然是\pLu
。我访问过的所有正则表达式网站都没有提到这个修饰符。
有什么想法吗?
【问题讨论】:
查看此链接右侧的说明regex101.com/r/lG2nG9/1 regular-expressions.info/unicode.html#category 总是多一个网站!感谢您提供非常酷的 regex101。以前从未见过这个网站。将其发布为答案?或者如果问题太明显(但不适合我),我会删除这个问题 你可以用\pL
代替\p[Lu\pLl
对于 C#/.Net 正则表达式语法,请考虑访问 MSDN - Regular Expression Language 和后续的 Character classes。
【参考方案1】:
这些被视为Unicode 属性。
Unicode 属性\pL
— \pLetter
的简写将匹配来自任何语言的任何类型的字母。因此,\pLu
将匹配具有小写变体的大写字母。并且,相反的\pLl
将匹配具有大写变体的小写字母。
简而言之,这将匹配来自任何语言的任何lowercase/uppercase that has a variant:
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
【讨论】:
你能解释一下uppercase letter that has a lowercase variant
吗?主要是lowecase variant
。
@AvinashRaj 这意味着在 unicode 字母表中,一个字符可以以大写和小写形式呈现,并且仅匹配该字母的大写版本。这也意味着有些大写字符没有小写版本。
那么\pL
是否可能匹配给定正则表达式不匹配的某些字符?即那些没有大写或小写变体的?
想想小写的德语字符ß
。由于这个字母不能出现在单词的开头,因此永远不会有大写的变体。
@OnlineCop 好吧,如果你使用了\pL
,那就太好了,而不是自己维护一个硬编码列表,因为现在有一个大写的ẞ
。 Wikipedia 有详细信息。以上是关于这个正则表达式是啥意思 - “\pLu”?的主要内容,如果未能解决你的问题,请参考以下文章