2017-04-18 19 views
0

を先頭と末尾whitepsacesを除去するために、私は、次の正規表現を使用してXMLファイルから(\ rを、\ nは、\ tのを含む)すべての空白文字を削除しようとしている:正規表現は、XMLファイルから

>([\r\n\t ])*([^ ]*[^<>]*[^ ]*)([\r\n\t ])*< 

しかし、この正規表現は、ファイル内のすべてのXMLタグを1つの一致として取得します。どのようにしてこの正規表現を改良して要件を満たすことができますか?

入力文字列:

<Address> 
    <City> New York </City> 
    <Zip> 1001 </Zip> 
    </Address> 

予想される結果(\ 2に置き換えられた場合):

<Address> 
    <City>New York</City> 
    <Zip>1001</Zip> 
    </Address> 
+0

これは[これのための奇妙な正規表現](https://regex101.com/r/6LdbDH/1)です。 –

答えて

1

>とwordcharacter間の空白にマッチする正規表現。
またはlookbehindsと先読みを使用することによりwordcharacterと</

(?<=[>])\s+(?=\w)|(?<=\w)\s+(?=[<]\/) 

テストhere

間の空白は、空白のみが捕捉されます。

元の正規表現に問題があったのはなぜですか? thisの例を試して、[\w ]+?から?を削除するとどうなるか説明を確認してください。 (貪欲対怠惰)