0

我有一个 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>and<hillary>标签需要关闭,and<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>

我是正则表达式的新手,对此我感到很难过。任何帮助将不胜感激!

4

2 回答 2

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
于 2013-11-10T20:59:03.383 回答
0

我在这里为您做了一个示例,适用于任何名称。

Search: /<(.*?>)(.*?</message>)/gs

Replace: <$1$2\n</$1
于 2013-11-10T21:07:32.263 回答