这个正则表达式是啥意思 - “\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”?的主要内容,如果未能解决你的问题,请参考以下文章

参考 - 这个正则表达式是啥意思?

参考 - 这个正则表达式是啥意思?

js 正则表达式 \\-是啥意思

(?!a)0 是啥?在 Java 正则表达式中是啥意思?

正则表达式 (?<!-) 是啥意思

Page: 匹配正则表达式 ".*" 是啥意思?