2012-04-17 140 views
2

我有一些文字是這樣的:正則表達式逃脫圍繞收縮撇號的

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

回答

0

隨着sed -r,從而簡化了屏蔽,我可以改變兩個表達式,如果我按照\\&\\#39;?,將其標記爲可選:

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