gpt4 book ai didi

regex - 为什么 Unicode 字符 'DOUBLE LOW-9 QUOTATION MARK' (U+201E) 不是引号?

转载 作者:行者123 更新时间:2023-12-05 03:52:26 27 4
gpt4 key购买 nike

虽然我偶然发现了这个问题,因为我编写的 PHP 正则表达式未能按照我预期的方式匹配它,但我不确定这是否是正确的询问地点。毕竟,PHP(可能还有其他支持 Unicode 的正则表达式引擎)中的定义似乎与官方分类相匹配(参见例如 https://www.fileformat.info/info/unicode/char/201e/index.htm ) 而我对这种官方分类不满意。

据此,DOUBLE LOW-9 QUOTATION MARK 被归类为 Ps(因此与 /\p{Ps}/ 匹配) 并且,尽管它的名字很特别,但不是 Pi(首引号),它在德语中使用。它甚至没有进入不太具体的“标点符号、首引号(可能表现得像 PsPe,具体取决于用法)”类别。这种(错误)分类的原因可能是什么?它在哪些语言中实际用作 Ps(即类似于 "(""[""{")?

但最重要的是:什么是合适的正则表达式来涵盖所有语言的所有类型的引号而不枚举太多单独的代码点?

最佳答案

一般类别 Pi (Initial_Punctuation) 和 Pf (Final_Punctuation) 不专门用于引号, 就像 Ps (Open_Punctuation) 和 Pe (Close_Punctuation) 不专门用于不包含的字符引号。相反,PiPf 用于字符对,其中其中一个 可以根据使用情况打开或关闭,而 Ps 字符始终开始,Pe 字符始终结束(忽略罕见或特殊情况)。一个字符属于这些一般类别中的哪一个是基于这些考虑的,与它是引号、括号还是其他什么无关。

U+201E DOUBLE LOW-9 QUOTATION MARK 被归类为 Ps 因为世界上还没有确定的正字法可以将它用作结束标记。它在实践中总是开放。相比之下,U+201C LEFT DOUBLE DOUBLE QUOTATION MARK 被归类为 Pi,因为根据您选择的具体引号样式,它既可以是开引号也可以是闭引号。

Unicode 有一个专门用于识别引号的属性,名为 Quotation_Mark。此属性的定义独立于前面讨论的一般类别值。

关于regex - 为什么 Unicode 字符 'DOUBLE LOW-9 QUOTATION MARK' (U+201E) 不是引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62195115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com