我嘗試使用下面的Vim的正則表達式:這爲什麼Vim RegEx搜索和替換不匹配?
%s/\v(\<Column\>[\s\w\<\>\/]+\<Name\>\s*Code\s*\<\/Name\>([\s\w\<\>\/]){-}\<\/Column\>)//g
我對匹配的字符串的格式(多行):
%s/\(<Column>[\ \t\nA-Za-z0-9\<\>\/]\+<Name>[ \t\n]*Code[ \t\n]*<\/Name>\([\ \t\nA-Za-z0-9\<\>\/]\)\{-}<\/Column>\)//g
我也試圖:
<Table>
<Name>NameOfThing</Name>
<Description>Description of thing</Description>
<Type>Data</Type>
<Columns>
<Column>
<Name>Code</Name>
<Description>Things Code</Description>
<Type>String</Type>
<Length>254</Length>
</Column>
<Column>
<Name>TypeCode</Name>
<Description>Things type code</Description>
<Type>String</Type>
<Length>254</Length>
</Column>
<Column>
<Name>Name</Name>
<Description>Things Name</Description>
<Type>String</Type>
<Length>254</Length>
</Column>
...
...
...
我試圖捕獲和移除只是看起來像這樣的部分:
<Column>
<Name>Code</Name>
<Description>Things Code</Description>
<Type>String</Type>
<Length>254</Length>
</Column>
當我轉換正則表達式模式語法到的東西,PCRE接受,它抓住了我所需要的正確:
(<Column>[\s\w\<\>\/]+<Name>[ \t\n]*Code[ \t\n]*<\/Name>[\s\w\<\>\/]+?<\/Column>)
缺少什麼我在這裏?
編輯:我很愚蠢,我的第一個嘗試工作,但我沒有修復它在其他地方固定它之後的Vim。
不過 - 我仍然好奇,爲什麼其他形式與魔法\v
不起作用:
%s/\v(\<Column\>[ \t\nA-Za-z0-9\<\>\/]+\<Name\>[ \t\n]*Code[ \t\n]*\<\/Name\>[ \t\n\<\>\/]{-}\<\/Column\>)//g
我欣賞的幫助,但我不相信這是一個答案。我可以用它作爲評論。我的問題具體是:「爲什麼這個正則表達式不起作用?」不過謝謝你! –