emacs regexp匹配首字母大写的字符串

时间:2012-10-10 06:53:19

标签: emacs

在lisp函数中,我使用正则表达式进行了以下测试,该表达式应匹配任何以大写字母开头的字符串:

(if (string-match "^[A-Z].+" my-string)

然而,这也与小写起始字符串相匹配。我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

来自string-match说明(以显示其类型C-h fM-x describe-function):

(string-match REGEXP STRING &optional START)
  

返回STRING中REGEXP的第一场比赛开始的索引,或者为零。   如果`case-fold-search'是非零的,则匹配忽略大小写。

只需将case-fold-search设为nil

(let ((case-fold-search nil))
 (string-match "^[A-Z].+"  my-string))

答案 1 :(得分:1)

请注意,它更糟糕:它也匹配"...\nHello",即使它以点开头,因为^不仅匹配字符串的开头,而且还匹配该字符串中任何行的开头。只匹配字符串开头的regexp-operator是``。我建议你使用:

(let ((case-fold-search nil)) (string-match "\\`[[:upper:]]" my-string))