我在文件中有一些header
字符串,我想用expected_status
替换。 header
显示为headers
或header:
。我只想用具有预期状态的冒号替换那些,所以:header: --> expected_status:
我使用replace-regexp
使用以下命令:
Replace string (default \(header\):?$ -> expected_status):
但是,它没有正确更换。它也用expected_status
替换冒号。有没有办法让emacs只对已识别的正则表达式组进行替换?
答案 0 :(得分:2)
有没有办法让emacs只对已识别的正则表达式组进行替换?
不确定;但不是replace-regexp
。
(while (re-search-forward "\\(header\\):" nil t)
(replace-match "expected_status" nil nil nil 1))
最后的1
是SUBEXP
的{{1}}参数,指定要从匹配的正则表达式替换的组/子表达式。
所以,例如:
replace-match
答案 1 :(得分:1)
不容易忘记组并执行 M-x replace-regexp RET标头:RET expected_status:RET
或许我错过了你想要达到的目标。
并以通用方式回答您的问题:
要仅替换正则表达式组,请创建三个组:
\(the-stuff-before\)\(the-stuff-you-want-to_replace\)\(the-stuff-after\)
然后用
替换它\1the-stuff-you-want\3
答案 2 :(得分:0)
否 - 但你能做什么标记你想要保留的部分,然后将其包含在替换表达式中。不确定您要匹配的确切正则表达式 - 但似乎是带有可选“:”的“标题”,并将其替换为“expected_status”。
保留可选的“:”将“header(:?)$”替换为“\ 1:expected_status”