[英]Simple regex question (vim search/replace)
如何指定搜索中的字符串有多个选项? 例如,我想找到任何以jspPar
, btn
或jspAtt
并以字母K
结尾的组合。
另外-我需要根据原始前缀将其替换为字符串。 例如,如果前缀为jspPar
,则需要将其替换为字母P
(并且,假设btn
和jspAtt
为B
和A
)。
是
\(jsPar\|btn\|jspAtt\)[^ \t]*K
您在找什么?
\\(jsPar\\|btn\\|jspAtt\\)
说“此时,匹配所有这些选项”,然后[^ \\t]*
说“此时,匹配任何数量(包括零)的空格或制表符字符”,而K
当然意味着“在这一点上匹配一个K”。
对于您添加的问题可以执行以下操作:
%s/\(jsPar\|btn\|jspAtt\)[^ \t]*\zsK/\=submatch(1) == 'jsPar' ? 'P' : submatch(1) == 'btn' ? 'B' : 'A' /g
( \\zs
说“考虑比赛已经开始”,所以只有“ K”会被替换。)
但是,只有在必须通过一次替换的情况下,我才会这样做。 否则,我只运行三个s///
s:
%s/jspAtt[^ \t]*\zsK/A/g
%s/jsPar[^ \t]*\zsK/P/g
%s/btn[^ \t]*\zsK/B/g
在给定的命令历史记录下,它的键入要少得多,也不太可能需要调试,而在指定任何计算时,这始终是一种潜力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.