String 如何在特定列之间找到匹配项?
文本文件中的第7行示例:String 如何在特定列之间找到匹配项?,string,search,vim,substring,String,Search,Vim,Substring,文本文件中的第7行示例: This is an example 这是我的搜索代码: /example\|an 现在,我想在从第1列到第11列的子字符串中捕获匹配项: let myhits = [] | 7s/\%>0cexample\|an\%<12c/\=add(myhits,submatch(0))[-1]/ge | echo myhits 但发现: myhits = ["an", "example"] 我做错了什么? 如何在子字符串中捕获匹配?所有由\\\分隔的对象都
This is an example
这是我的搜索代码:
/example\|an
现在,我想在从第1列到第11列的子字符串中捕获匹配项:
let myhits = [] | 7s/\%>0cexample\|an\%<12c/\=add(myhits,submatch(0))[-1]/ge | echo myhits
但发现:
myhits = ["an", "example"]
我做错了什么?如何在子字符串中捕获匹配?所有由
\\\
分隔的对象都是自己的分支,因此在表达式中,左分支不检查结束列,右分支不检查结束列。您可以使用分组仅对关键字进行分支:\%>0c\(示例\|an\)\%由\\\
分隔的所有内容都是它自己的分支,因此在表达式中,左分支不检查结束列,右分支不检查结束列。您可以使用分组仅对关键字进行分支:\%>0c\(示例\\124; an\)\%谢谢!不幸的是,在我的情况下,并不总是可以对我的搜索进行分组。捕获子字符串,然后只在子字符串中进行搜索是一种解决方案吗?是的,这听起来是个好主意。您可以使用let myLine=getline(7)[0:10]
,然后为每个模式编写类似于伪代码while(length(myLine)>0{call substitute(pattern),“,myLine),并在myLine更改时添加到myhits}
。我一时想不出vim语法,但是帮助函数列表
或帮助替换
可能会有帮助。谢谢!不幸的是,在我的情况下,并不总是可以对我的搜索进行分组。捕获子字符串,然后只在子字符串中进行搜索是一种解决方案吗?是的,这听起来是个好主意。您可以使用let myLine=getline(7)[0:10]
,然后为每个模式编写类似于伪代码while(length(myLine)>0{call substitute(pattern),“,myLine),并在myLine更改时添加到myhits}
。我一时想不出vim语法,但是帮助函数列表
或帮助替换
可能会有所帮助。
myhits = ["an", "example"]