使用REGEX可以在术语具有特定类别的逗号周围交换术语顺序

时间:2011-04-12 15:20:21

标签: xml regex

对这种东西毫无希望,感谢任何帮助。

我有一个c80000术语列表,格式如下:

<term>
    <termId>100323N166777388LGH3cj24jYcDY75lTgZl</termId>
    <termName>term1</termName>
    <termType>UNUSE</termType>
       <relation>
      <relationType>USE</relationType>
      <termId>OMITERMO6650</termId>
      <termName>term3, term4</termName>
    </relation>
  </term>
  <term>
    <termId>OMITERMO6650</termId>
      <termName>term3, term4</termName>
    <termType>Pt</termType>
     </term>

是否可以编写正则表达式(或者在记事本++中的任何其他查找和替换)来交换条件的顺序,如果标记中有逗号<termType>Pt</termType>并在{{1中引用属性。因此,在示例中,将交换术语3和4。

<relation>并未引用所有PT术语,但在它们所在的位置也需要进行交换。此外,并非所有术语都包含逗号分隔值,因此应忽略它们

希望这很有道理,非常感谢!

1 个答案:

答案 0 :(得分:0)

echo "<termName>term3, term4</termName>" | sed -E 's/<termName>(.*), (.*)<\/termName>/<tN>\2, \1<\/tn>/' 
<tn>term4, term3</tn>

当然我只是用'tn'作为缩写。 Notepad ++中的正则表达式可能有所不同 - 也许你必须用反斜杠掩盖括号。它在termName内部交换 - 我希望我明白这一点。

它对评论不敏感,并且不会匹配跨越多行的标记。但是,当然,在第二种情况下,很容易测试你的文件(所有'termnames'的grep),并且注释可能不是问题。