区分"符号构成字符","符号成分"和"字成分"

时间:2014-08-23 01:24:54

标签: regex emacs

Emacs手册的正则表达式部分似乎令人困惑w.r.t.以上三个概念。

我首先列出我对以下解释的解释:

  1. "符号成分"与"字成分";
  2. 互斥
  3. "符号组成字符"包括"符号成分"和#34;字成分"
  4. 这是正确的理解吗?
    以下是手册中的相关引用:
    - 注1:

      

    单词成分:'w':   人类语言中的部分单词。这些通常用于程序中的变量和命令名称。所有大写和小写字母以及数字通常都是单词成分。

    - 注2:

      

    符号成分:'_':   变量和命令名称中使用的额外字符以及单词成分。示例包括Lisp模式中的字符'$& * + - <>',它们可能是符号名称的一部分,即使它们不是英语单词的一部分。在标准C中,唯一在符号中有效的非单词构成字符是下划线('')。
      quote 1 and 2

    - 注3:

      

    \ _&LT ;:   匹配空字符串,但仅在符号的开头。符号是一个或多个符号组成字符的序列。符号构成字符是其语法为“w”或“_”的字符。只有当符号组成字符跟随时,'_<'才会在缓冲区的开头匹配   quote 3

1 个答案:

答案 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.