我可以找到表达式,但我不想替换它的所有内容(vim 中的正则表达式)
I can find the expressions but I don't want to replace everything of it (regex in vim)
我试了一段时间了,但还是搞不懂:我有这样的文字:
xxx "fy1":
xxx.xxx = fy;
xxx;
xxx "tm1":
xxx.xxx = tm;
xxx;
...
我希望它看起来像这样:
xxx "fy1":
xxx.xxx = fy1;
xxx;
...
我的问题是我可以找到所有出现的地方,我想在其中放置一个“1”
s/[ft][ymdhi];/???/g
但我放在问号处的所有内容也替换了字母。我唯一想做的就是在这两个字母后面加上一个数字。
我想了一些事情
\w{2}
也在搜索字符串中,但这会找到分号前有两个字母的所有内容,所以我想我需要
[ft][ymdhi]
提前致谢!
您想将 \(...\)
与 </code> 一起使用:</p>
<pre><code>:%s/\([ft][ymdhi]\);/;/
转义的括号 \(...\)
排序 store 括号之间匹配的内容。存储的文本稍后可以在 </code>.</p> 中再次使用
<p>在您的情况下,<code>
与十一无关,这只是一个巧合,您记得带括号的文本后跟一个 1
。
您可以创建捕获组,以便在替换中引用匹配的文本。或者你可以使用 vim 的 \zs
来保持一些匹配的文本不变,例如
这条线完成了工作:
%s/[ft][ymdhi]\zs;/1;/g
:h \zs and :h \ze
详情
如果在此示例中也添加 \ze
,则为:
%s/[ft][ymdhi]\zs\ze;/1/g
它也有效。
我试了一段时间了,但还是搞不懂:我有这样的文字:
xxx "fy1":
xxx.xxx = fy;
xxx;
xxx "tm1":
xxx.xxx = tm;
xxx;
...
我希望它看起来像这样:
xxx "fy1":
xxx.xxx = fy1;
xxx;
...
我的问题是我可以找到所有出现的地方,我想在其中放置一个“1”
s/[ft][ymdhi];/???/g
但我放在问号处的所有内容也替换了字母。我唯一想做的就是在这两个字母后面加上一个数字。
我想了一些事情
\w{2}
也在搜索字符串中,但这会找到分号前有两个字母的所有内容,所以我想我需要
[ft][ymdhi]
提前致谢!
您想将 \(...\)
与 </code> 一起使用:</p>
<pre><code>:%s/\([ft][ymdhi]\);/;/
转义的括号 \(...\)
排序 store 括号之间匹配的内容。存储的文本稍后可以在 </code>.</p> 中再次使用
<p>在您的情况下,<code>
与十一无关,这只是一个巧合,您记得带括号的文本后跟一个 1
。
您可以创建捕获组,以便在替换中引用匹配的文本。或者你可以使用 vim 的 \zs
来保持一些匹配的文本不变,例如
这条线完成了工作:
%s/[ft][ymdhi]\zs;/1;/g
:h \zs and :h \ze
详情
如果在此示例中也添加 \ze
,则为:
%s/[ft][ymdhi]\zs\ze;/1/g
它也有效。