You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Emacs正则表达式问题:如何正确匹配CamelCase驼峰式单词?

嘿,我来帮你分析下问题出在哪~

你的正则表达式\([A-Z]*\)\.[a-zA-Z0-9_-]*[(]里,[A-Z]*的问题在于***允许匹配零个大写字母**——也就是说,当遇到helloWorld.hello(这种以小写开头的字符串时,[A-Z]*会匹配「空字符串」,然后正则就会继续匹配后面的.hello(,自然就把整个非驼峰的内容也高亮了。

要匹配真正的CamelCase驼峰式单词,你需要确保这个单词至少以一个大写字母开头,并且后面跟着大小写混合的字母(符合驼峰的结构)。这里给你两个修正方向:

基础版:确保以大写开头(允许全大写单词)

把[A-Z]*改成[A-Z][a-zA-Z]*,修正后的正则:

\([A-Z][a-zA-Z]*\)\.[a-zA-Z0-9_-]*[(]
  • [A-Z]:强制要求单词以大写字母开头,直接排除了小写开头的情况;
  • [a-zA-Z]*:后面可以跟任意数量的大小写字母,覆盖了HelloWorld、HELLOWORLD这类结构。

严格版:确保是「大小写交替」的驼峰(排除全大写单词)

如果你想更严格,只匹配真正的驼峰(比如HelloWorld,而不是全大写的HELLOWORLD),可以调整为:

\([A-Z][a-z]+[a-zA-Z]*\)\.[a-zA-Z0-9_-]*[(]
  • [A-Z][a-z]+:要求大写开头后至少跟一个小写字母,保证存在大小写交替的驼峰特征;
  • 后面的[a-zA-Z]*则允许后续继续出现大小写混合的字母。

这样调整后,HelloWorld.hello(会被正确匹配,而helloWorld.hello(因为开头是小写,正则的第一部分无法匹配,就不会被高亮啦~

内容的提问来源于stack exchange,提问作者Jen-Chieh Shen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:36:36