在lisp函数中,我使用正则表达式进行了以下测试,该表达式应匹配任何以大写字母开头的字符串:
(if (string-match "^[A-Z].+" my-string)
然而,这也与小写起始字符串相匹配。我在这里缺少什么?
答案 0 :(得分:4)
来自string-match
说明(以显示其类型C-h f
或M-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))