正则表达式逃脱围绕收缩撇号的

问题描述:

我有一些文字是这样的:正则表达式逃脱围绕收缩撇号的

i18n_en_it_IT.xml:<li>risalire all&\#39;autore.</li> 

像这样(注意躲过英镑符号中的第一个,但不是在第二)

i18n_en_it_IT.xml:<li>risalire all&#39;autore.</li> 

如果我运行一个sed表达具有倾斜撇号(d \ u2019)取代

&\#39; 
&#39; 

它工作ö第一个案件(逃跑),但不是第二个案件,我不知道为什么?我在这里看到的唯一区别是我从第二个删除了双重逃脱,但由于某种原因它不会匹配所有的' autore并将其替换为alld \ u2019autore?

s/\([A-Za-z]\+\)&\\#39;\([A-Za-z]\+\)/\1\\u2019\2/g 
s/\([A-Za-z]\+\)&#39;\([A-Za-z]\+\)/\1\\u2019\2/g 
+0

这是解决了,问题是我加了一个斜撇号的广告,当我删除它时,这两个工作都起作用了,我已经修正了这个例子,删除了d \ u2019,并用\ u2019替换) – user1244166 2012-04-17 02:45:30

随着sed -r,从而简化了屏蔽,我可以改变两个表达式,如果我按照\\&\\#39;?,将其标记为可选:

cat pounds.xml | sed -r 's/([A-Za-z]+)&\\?#39;([A-Za-z]+)/\1\\u2019\2/g'