繁体   English   中英

简单的正则表达式问题(vim搜索/替换)

[英]Simple regex question (vim search/replace)

如何指定搜索中的字符串有多个选项? 例如,我想找到任何以jspParbtnjspAtt并以字母K结尾的组合。

另外-我需要根据原始前缀将其替换为字符串。 例如,如果前缀为jspPar ,则需要将其替换为字母P (并且,假设btnjspAttBA )。

\(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM