3

在某些正则表达式的风格中,在方括号表达式中,=符号是一个特殊字符,用作分隔符,用于将任何一个等价类中的元素括起来。该文档说明了以下内容:

等价类表达式应表示属于等价类的整理元素集,如整理顺序中所述。只应识别初级等价类。该类应通过将等价类中的任何一个整理元素括在括号相等(“[=”和“=]”)分隔符中来表示。例如,如果 'a'、'à' 和 'â' 属于同一个等价类,则 "[[=a=]b]"、"[[=à=]b]" 和 "[[ =â=]b]" 都等价于 "[aàâb]"。如果整理元素不属于等价类,则等价类表达式应视为整理符号。

我不太确定这意味着什么。如果a和属于àâ一个等价类,这是否意味着我们希望指定正则表达式"[ab]"和是等价的"[àb]""[âb]"那么使用[= =]分隔符的目的是什么,因为我们还不如写"[aàâb]"

我理解“等价类”在其一般定义中的含义,但我无法理解它在这种情况下的含义。

4

1 回答 1

1

本质上,例如,[=a=]意思是“属于属于的等价类的所有字符a。如果aà形成一个仅延续这两个的等价类,那么[=a=][=à=]都与(显然写在 a 内[…])相同。但是如果等价类还包含â, 然后是所有的[=a=],[=à=][=â=]mean aàâ(同样,写在 中[…])。

等价类包含哪些字符取决于语言环境,但如果语言环境没有定义给定的等价类,比如说[=a=],那么将使用具有相同名称的整理序列,即[.a.],通常a与语言环境通常包括普通字符作为整理序列。

参考:精通正则表达式,第 3 版,第 128 页,这是一本关于正则表达式的优秀书籍,由精通正则表达式的人撰写

于 2021-06-01T13:02:23.513 回答