
私が xml と npp について初心者であることを念頭に置いてください。
数千のレコードを含む大きな XML ファイルがあり、他のプログラムで動作するように行を変更する必要があります。
フォーマットの変換はほとんど完了しましたが、問題が発生しました。
私の XML は現在次のようになっています:
</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>
そして私が欲しいもの:
<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>
問題は、</Value>
スタンドアロンの文字列であるかどうかに応じて、2 つの異なるものに置き換えることです。2 つ目の問題は、行の一部を置き換えて残りを保持することです。保持したい部分の文字数が行ごとに異なる場合です。
あらゆる助けを心から感謝します!
答え1
行内に単独で存在する場合は、</Value
に置き換えます。</DPR>
検索対象:^ *</Value>
と置換する:</DPR>
検索モード: 正規表現
その後は、文字列と一緒になっているもの以外に のインスタンスは存在しないはずな</Value>
ので、それらを置き換えるのは簡単なはずです。しかし、完全性のために...
行内に[somestringhere]</Value
->が単独で存在する場合の置き換え:[somestringhere]</description>
検索対象:^(<description>.+?)</Value>
と置換する:$1</description>
検索モード: 正規表現
上記は^
行の先頭を表し、*
空白が存在するかどうかを意味し、.+?
その後の文字列の最初の出現までの任意の文字を意味します(正規表現の詳細についてはここを参照してください)であり、$1
置換文字列内の部分は、ソース データ内の括弧で囲まれた一致する部分に置き換えられます。
答え2
最も簡単なのは、Perl で正規表現を使用することです。
perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt