Ich versuche, die folgende Vim regulären Ausdruck zu verwenden:Warum stimmt diese Vim RegEx Suche und Ersetzung nicht überein?
%s/\(<Column>[\ \t\nA-Za-z0-9\<\>\/]\+<Name>[ \t\n]*Code[ \t\n]*<\/Name>\([\ \t\nA-Za-z0-9\<\>\/]\)\{-}<\/Column>\)//g
ich auch versucht habe:
%s/\v(\<Column\>[\s\w\<\>\/]+\<Name\>\s*Code\s*\<\/Name\>([\s\w\<\>\/]){-}\<\/Column\>)//g
Die Saite, die ich gegen passende bin die Form (von vielen Linien) dieser :
<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>
...
...
...
ich nur den Teil, der so aussieht einzufangen und entfernen versuchen:
<Column>
<Name>Code</Name>
<Description>Things Code</Description>
<Type>String</Type>
<Length>254</Length>
</Column>
Wenn ich den regulären Ausdrücken Syntax in etwas umwandeln, die PCRE nimmt, fängt es, was ich richtig brauchen:
(<Column>[\s\w\<\>\/]+<Name>[ \t\n]*Code[ \t\n]*<\/Name>[\s\w\<\>\/]+?<\/Column>)
Was bin ich hier?
Edit: Ich bin dumm, mein erster Versuch funktioniert, aber ich hatte es nicht in Vim behoben, nachdem es anderswo behoben wurde.
Aber - ich bin immer noch neugierig, warum die andere Form der Magie \v
funktioniert nicht:
%s/\v(\<Column\>[ \t\nA-Za-z0-9\<\>\/]+\<Name\>[ \t\n]*Code[ \t\n]*\<\/Name\>[ \t\n\<\>\/]{-}\<\/Column\>)//g
Ich schätze die Hilfe, aber ich glaube nicht, dass dies eine Antwort ist. Ich könnte das als Kommentar verwenden. Meine Frage lautet konkret: "Warum funktioniert diese Regex nicht?" Trotzdem danke! –