正则表达式删除标签中的行,同时保留其他标签
regex remove line in tag while maintaining other tags
我有一个巨大的 XML 文档,我想清理它,因为文本编辑器无缘无故地向它添加了自动换行。
部分 XML 代码如下所示:
<ProfileFolder name="I/O">
<Allowed display="I/O" value="I/O"/>
<Allowed display="I/O, I/O connector"
value="4pin I/O connector"/>
<Allowed display="I/O, I/O connector"
value="6pin I/O connector"/>
<Allowed display="I/O, I/O connector"
value="configurable I/O connectors"/>
<Allowed display="I/O, I/O connector"
value="fixed I/O connectors"/>
<Allowed value="pin numbers above"/>
<Allowed value="pin numbers below"/>
<Allowed display="I/O, I/O connector" value="relay ports"/>
<Allowed display="VoIP" value="call button"/>
</ProfileFolder>
我想删除标签内的换行符,所以不是:
<Allowed display="I/O, I/O connector"
value="fixed I/O connectors"/>
我要:
<Allowed display="I/O, I/O connector" value="fixed I/O connectors"/>
我真的很讨厌RegEx,尽管它非常非常强大,而且我无法弄清楚RegEx代码的正确格式。
我试过:
<(.*)\n(.*)?\/>
和
(?<=>)(.*)\n(.*)\/>
(这是最接近的,但与我想要的相反):)
目前正在使用 Sublime。
就这么简单:
\n(?!<)
应该适合你的情况。此正则表达式表示换行符后没有 <
字符。
您可以找到它并替换为单个 space。
使用 XML 解析器:
$xml = simplexml_load_string( $xml );
echo $xml->asXML();
将输出:
(...)
<Allowed display="I/O, I/O connector" value="4pin I/O connector"/>
<Allowed display="I/O, I/O connector" value="6pin I/O connector"/>
(...)
SimpleXML
默认删除标签声明中的所有换行符。
这也行
(?<!>)\n
正则表达式解释
(?<!>)\n #Assure that the line does not end with > followed by a \n.
所以如果该行满足上述条件,则合并这些行
我有一个巨大的 XML 文档,我想清理它,因为文本编辑器无缘无故地向它添加了自动换行。
部分 XML 代码如下所示:
<ProfileFolder name="I/O">
<Allowed display="I/O" value="I/O"/>
<Allowed display="I/O, I/O connector"
value="4pin I/O connector"/>
<Allowed display="I/O, I/O connector"
value="6pin I/O connector"/>
<Allowed display="I/O, I/O connector"
value="configurable I/O connectors"/>
<Allowed display="I/O, I/O connector"
value="fixed I/O connectors"/>
<Allowed value="pin numbers above"/>
<Allowed value="pin numbers below"/>
<Allowed display="I/O, I/O connector" value="relay ports"/>
<Allowed display="VoIP" value="call button"/>
</ProfileFolder>
我想删除标签内的换行符,所以不是:
<Allowed display="I/O, I/O connector"
value="fixed I/O connectors"/>
我要:
<Allowed display="I/O, I/O connector" value="fixed I/O connectors"/>
我真的很讨厌RegEx,尽管它非常非常强大,而且我无法弄清楚RegEx代码的正确格式。
我试过:
<(.*)\n(.*)?\/>
和
(?<=>)(.*)\n(.*)\/>
(这是最接近的,但与我想要的相反):)
目前正在使用 Sublime。
就这么简单:
\n(?!<)
应该适合你的情况。此正则表达式表示换行符后没有 <
字符。
您可以找到它并替换为单个 space。
使用 XML 解析器:
$xml = simplexml_load_string( $xml );
echo $xml->asXML();
将输出:
(...)
<Allowed display="I/O, I/O connector" value="4pin I/O connector"/>
<Allowed display="I/O, I/O connector" value="6pin I/O connector"/>
(...)
SimpleXML
默认删除标签声明中的所有换行符。
这也行
(?<!>)\n
正则表达式解释
(?<!>)\n #Assure that the line does not end with > followed by a \n.
所以如果该行满足上述条件,则合并这些行