Emacs手册的正则表达式部分似乎令人困惑w.r.t.以上三个概念。
我首先列出我对以下解释的解释:
这是正确的理解吗?
以下是手册中的相关引用:
- 注1:
单词成分:'w': 人类语言中的部分单词。这些通常用于程序中的变量和命令名称。所有大写和小写字母以及数字通常都是单词成分。
- 注2:
符号成分:'_': 变量和命令名称中使用的额外字符以及单词成分。示例包括Lisp模式中的字符'$& * + - <>',它们可能是符号名称的一部分,即使它们不是英语单词的一部分。在标准C中,唯一在符号中有效的非单词构成字符是下划线('')。
quote 1 and 2
- 注3:
\ _&LT ;: 匹配空字符串,但仅在符号的开头。符号是一个或多个符号组成字符的序列。符号构成字符是其语法为“w”或“_”的字符。只有当符号组成字符跟随时,'_<'才会在缓冲区的开头匹配 quote 3
答案 0 :(得分:2)
我的理解是"符号构成字符" 应仅用于表示本身就是符号成分的字符(因此,正如您所理解的那样,不是字成分)。
您的引言三确实令人困惑,但此后的措辞已得到修复。在我的Emacs(大约三个月前从主干)中,它写着:
`\_<'
matches the empty string, but only at the beginning of a symbol. A
symbol is a sequence of one or more word or symbol constituent
characters. `\_<' matches at the beginning of the buffer (or
string) only if a symbol-constituent character follows.
`\_>'
matches the empty string, but only at the end of a symbol. `\_>'
matches at the end of the buffer (or string) only if the contents
end with a symbol-constituent character.