Regex 为什么是Unicode字符';双低-9引号';(U+;201E)不是引号吗?

Regex 为什么是Unicode字符';双低-9引号';(U+;201E)不是引号吗?,regex,unicode,Regex,Unicode,尽管由于我编写的PHP正则表达式未能以我预期的方式与之匹配,所以我无意中发现了这一点,但我不确定这是否是一个正确的问题。毕竟,PHP中的定义(可能还有其他支持Unicode的正则表达式引擎)似乎与官方分类相匹配(参见。 )这是我不满意的官方分类 据此,双低-9引号被归类为Ps(因此与/\p{Ps}/)和Pi(初始引号),尽管它的名字很简单,但在德语中并不使用。它甚至没有进入不太具体的“标点符号、初始引用(根据用法可能表现为Ps或Pe)类别”。这种(错误)分类的原因是什么?在哪些语言中,它实际用作

尽管由于我编写的PHP正则表达式未能以我预期的方式与之匹配,所以我无意中发现了这一点,但我不确定这是否是一个正确的问题。毕竟,PHP中的定义(可能还有其他支持Unicode的正则表达式引擎)似乎与官方分类相匹配(参见。 )这是我不满意的官方分类

据此,双低-9引号被归类为
Ps
(因此与
/\p{Ps}/
)和
Pi
(初始引号),尽管它的名字很简单,但在德语中并不使用。它甚至没有进入不太具体的“标点符号、初始引用(根据用法可能表现为
Ps
Pe
)类别”。这种(错误)分类的原因是什么?在哪些语言中,它实际用作
Ps
(即类似于
”(“
”[“
”{


但最重要的是:什么是一个合适的正则表达式,它可以覆盖所有语言中的所有类型的引号,而不枚举太多的单个代码点?

一般类别
Pi
Initial\u标点
)和
Pf
Final\u标点
)不专门用于引号,就像
Ps
Open\u标点
)和
Pe
Close\u标点
)并非仅用于非引号的字符。相反,
Pi
Pf
用于成对字符,其中任何一个字符都可以根据用法打开或关闭,而
Ps
字符总是打开,而
Pe
字符总是关闭(忽略罕见或特殊情况)。字符属于这些一般类别中的哪一个是基于这些考虑因素,与是否是引号、括号或其他内容无关

U+201E双低-9引号被归类为
Ps
,因为世界上没有现成的正字法可以将其用作收尾标记。它在实践中总是打开的。相反,U+201C左双引号被归类为
Pi
,因为它可以同时作为开尾引号,具体取决于n您选择了哪种特定的引用样式


Unicode有一个专用属性,用于标识适当命名为
引号的引号。此属性独立于前面讨论的常规类别值进行定义。

如果您有一个类似
[\p{Pi}\x{201E}的CharaCate类,它可能会起作用
例如?不确定是否会有其他引号从
Pi
中丢失。此外,如果您想翻阅,可以找到用作括号的任何此类引号的列表。快速扫描告诉我,有几个引号属于
Ps
Pe
Pf
我猜是用过了作为德语中的初始标点符号,但不一定在其他地方。也许它的使用过于模糊,无法将其分为两类。@deceze Dutch过去也使用了“too”,尽管我们似乎后来改用了“later.
/[\x{FE41}-\x{FE44}\x{FF02}\x{FF07}\x{FF62}-\x{FF63}-\x{2018}-\x{201F}-\x{2039}-\x{FF07}300C}{300F}\x{301D}-\x{301F}\x{2E42}\x{22}\x{27}\x{AB}\x{BB}]/u
覆盖了所有带有
引号
=YSounds的代码点,这是一个奇怪的原理。“这并不总是在结尾,有时是在开头,所以我们最好称之为final”?/rant——但对于应用程序来说更重要的是:
引号
属性在普通正则表达式引擎中似乎不能作为速记使用?