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

发布于 2024-10-09 19:27:04 字数 299 浏览 8 评论 0原文

如何指定搜索中的字符串有多个选项? 例如,我想查找以 jspParbtnjspAtt 开头且以字母 K 结尾的任何组合代码>.

另外 - 我需要根据原始前缀将其替换为字符串。 例如,如果前缀是 jspPar,我需要将其替换为字母 P。 (例如,BA 分别对应 btnjspAtt)。

How do I specify that there are several options for a string in a search?
For example, I want to find any combination that start with either jspPar, btn or jspAtt that ends with the letter K.

Also - I need to replace it with a string depending on the original prefix.
for example, if the prefix was jspPar I need to replace it with the letter P. (and, let's say, B and A for btn and jspAtt accordingaly).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若沐 2024-10-16 19:27:04

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

给定命令历史记录,输入的次数要少得多,而且也不太可能需要调试,而在指定任何计算时,这总是有可能的。

Is

\(jsPar\|btn\|jspAtt\)[^ \t]*K

what you are looking for?

The \(jsPar\|btn\|jspAtt\) says “at this point, match any of these alternatives”, then [^ \t]* says “at this point, match any amount (incl. zero) of space or tab characters”, and K of course means “at this point match a K”.


For your added question could do something like this:

%s/\(jsPar\|btn\|jspAtt\)[^ \t]*\zsK/\=submatch(1) == 'jsPar' ? 'P' : submatch(1) == 'btn' ? 'B' : 'A' /g

(The \zs says “consider the match to have started at this point” so only the “K” will be replaced.)

But I would only do that if I had to do the substitution in a single pass. Otherwise I’d just run three s///s:

%s/jspAtt[^ \t]*\zsK/A/g
%s/jsPar[^ \t]*\zsK/P/g
%s/btn[^ \t]*\zsK/B/g

Given command history, that’s much less typing, and is also very unlikely to require debugging, whereas that’s always a potentiality when specifying any computation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文