对这种东西毫无希望,感谢任何帮助。
我有一个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术语,但在它们所在的位置也需要进行交换。此外,并非所有术语都包含逗号分隔值,因此应忽略它们
希望这很有道理,非常感谢!
答案 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),并且注释可能不是问题。