我有一个xml文件的完整facebook消息,其元素需要重新排列和关闭。结构如下所示:
<john>
<timestamp>Tuesday, August 7, 2012 at 3:53pm EDT</timestamp>
<message>Cats or dogs?</message>
<hillary>
<timestamp>Sunday, August 8, 2012 at 1:54am EST</timestamp>
<message>Ugh, definitely dogs.</message>
需要关闭<john>
和<hillary>
代码,并且需要交换<timestamp>
和<message>
元素:
<john>
<message>Cats or dogs?</message>
<timestamp>Tuesday, August 7, 2012 at 3:53pm EDT</timestamp>
</john>
<hillary>
<message>Ugh, definitely dogs.</message>
<timestamp>Sunday, August 8, 2012 at 1:54am EST</timestamp>
</hillary>
我是正则表达式的新手,对此我很难过。任何帮助将不胜感激!
答案 0 :(得分:1)
你可以试试这个:
search : (<([^>]+)>(?:\s+|<([^>]+)>[^<]*</\3>)+)(?=(\r?\n)|$)
replace : $1$4</$2>
如果需要,您可以更明确:
search : (<([^>]+)>(?:\s+|<(timestamp|message)>[^<]*</\3>)+)(?=(\r?\n)|$)
replace : $1$4</$2>
将消息标记放在时间戳标记之前:
search : (<message>[^<]*</message>)(\s*)(<timestamp>[^<]*</timestamp>)
replace : $3$2$1
答案 1 :(得分:0)
我为您here做了一个适用于任何名称的示例。
Search: /<(.*?>)(.*?</message>)/gs
Replace: <$1$2\n</$1