You*_* Hu 1 regex emacs search word-boundary
使用正则表达式\bfoo\b搜索单词时foo,结果包括诸如foo_a和 之类的单词a_foo。如何从结果中排除这些词?即,如何要求 emacs 不将下划线视为单词边界。
我终于找到了解决方案:
默认情况下,下划线 _ 不是单词组成字符(换句话说,它是单词边界)。我们可以通过添加将下划线定义为单词组成字符
(modify-syntax-entry ?_ "w")
Run Code Online (Sandbox Code Playgroud)
在.emacs文件中。
为了使其在主要模式下工作,我们需要将此定义添加到模式挂钩中:
(defun yjf90 () (modify-syntax-entry ?_ "w"))
(add-hook 'f90-mode-hook 'yjf90)
Run Code Online (Sandbox Code Playgroud)
看到这个
更新:
更准确地说,我们应该区分词边界和符号边界。前者是\b,后者:符号的开始和结束分别是\_<和\_>(这很尴尬,我使用 Emacs 多年都不知道它的存在)。大多数编程语言将下划线视为符号的一部分,因此问题的直接解决方案是用作\_<foo\_>搜索正则表达式。
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |