用于从XML文件中删除前导和尾随whitepsaces的正则表达式

时间:2017-04-18 06:03:13

标签: regex xml

我一直在尝试使用以下正则表达式从XML文件中删除所有空白字符(包括\ r,\ n,\ t \ t):

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

但是这个正则表达式将文件中的所有XML标记捕获为单个匹配。如何改进此正则表达式以满足要求?

输入字符串:

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

预期结果(当替换为\ 2时):

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

1 个答案:

答案 0 :(得分:1)

匹配>和字符之间的空格的正则表达式 或者字词和</

之间的空格
(?<=[>])\s+(?=\w)|(?<=\w)\s+(?=[<]\/)

测试here

通过使用lookbehinds和lookahead,只捕获空白。

为什么你的原始正则表达式有问题?请尝试this示例,并检查说明从?中删除[\w ]+?后会发生什么情况。 (贪婪与懒惰)