正则表达式搜索并用两个条件替换

正则表达式搜索并用两个条件替换

问题描述:

我想在文件中执行搜索和替换。正则表达式搜索并用两个条件替换

搜索将针对其扩展名为.xml的文件名(文本文件内)进行搜索。 通过.xml扩展名查找位置,并立即更改文本。

即,找到 “emission_mazda_3_c1_zjz6_16_ _ho2s_front.xml” 文字这一行和替换文本 “emission_mazda_3_c1_zjz6_16_ _ho2s_front.xml”。

任何帮助将不胜感激,谢谢 汤米

+0

他们会一直采用这种格式吗?什么是最通用的方式来表达这些文件名(虽然仍然一致)? – 2011-03-02 15:43:24

稍微取决于你所使用的正则表达式,所以我给了几个例子。

使用BRE你可以使用:

s/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/ 

其中作为Vim使用BRE,要做到这一点对整个文件是:

%s/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/ 

或者与SED,也使用BRE,到输出到文件input.txt标准输出与取得的替换:

sed -e 's/\(emission_mazda_3_c1_zjz6_16_\)\(05\)\(_ho2s_front.xml\)/\104\3/' input.txt 

虽然有ERE你ç乌尔德使用:

s/(emission_mazda_3_c1_zjz6_16_)(05)(_ho2s_front.xml)/\104\3/ 

诀窍,这一切都是利用反向引用的。前两个/字符之间的文字描述了您正在查找的内容,并使用()字符进行分组。最后两个/字符之间的文字就是你想要替换的文字。所以你说的是用第一组替换找到的文本(\1表示这个),然后把04,然后加上第三组(\3表示这个)。