我可以在vim中使用哪些正则表达式来查找所有下划线,但以下划线除外:
m_<some variable name>
答案 0 :(得分:1)
假设<some variable name>
只能由字母数字字符组成(但不能由_
组成),我们可以为{{ 1}}(即关键字不能在\<m
之前以m
开头)
_
如果/\%(\<m\)\@<!_/
本身也可以包含下划线,则情况将变得更加复杂。然后,我们必须在<some variable name>
和\<m
和\<m_\w*
的下划线(:help /\@<!
)之前排除相同位置(:help /\@!
)的匹配,以此类推,以结束与\<m_\w*_\w*
:
\w*\>
这还将排除/\%(\%(\<m\%(_\w*\)*\)\@<=_\w*\>\)\@!_/
本身。要解决此问题,我们需要(通过两个分支)区分稍后在m_
中排除下划线匹配和在\<m_\w*
之后直接匹配,然后必须具有\<m
才能将其排除:
\w\+