1

アドバイスをお願いします<chemform>。もう使用されていない wiki のコードを置き換えます。通常、文字列は次のように単純です。

<chemform>CH3COO-</chemform>
<chemform>Ba2+</chemform>
<chemform>H2CO3</chemform>

これらを次のものに置き換える必要があります。

CH<sub>3</sub>COO<sup>-</sup>
Ba<sub>2</sub><sup>+</sup>
H<sub>2</sub>CO<sub>3</sub>

これまでのところ、RegExr ツールのこの正規表現を思いつきました。

マッチ:<chemform\b[^>]*>(\D*?)([0-9]*)(\D*?)(\D*?)([0-9]*)(\D*?)([-+]*?)</chemform>

置換:$1<sub>$2</sub>$3$4<sub>$5</sub>$6<sup>$7</sup>

私はコードがひどいことを知っていますが、これまでのところ、次のような空の文字列を取得しているという事実を除いて、私にとっては機能しています<sub></sub>:

<sub></sub>CH<sub>3</sub>COO<sup>-</sup>
<sub></sub>Ba<sub>2</sub><sup>+</sup>
H<sub>2</sub>CO<sub>3</sub><sup></sup>

2 回目の置換検索を行わずにこれらを取り除くにはどうすればよいですか? どうもありがとう!

4

1 に答える 1

0

条件付き置換に進むことができる Notepad++ を使用できます (詳細については、Wiktor Stribiżewの以前の投稿を参照してください)。

次のパターンを使用します。

  • マッチ:([A-Za-z]+(?=[-+\d]))(?<sub>\d+)?(?<sup>[-+])?(?=[-+\w]*</chemform>)
  • 交換:$1(?{sub}<sub>$+{sub}</sub>)(?{sup}<sup>$+{sup}</sup>)

入力サンプルが与えられると、次のようになります。

<chemform>CH<sub>3</sub>COO<sup>-</sup></chemform>  
<chemform>Ba<sub>2</sub><sup>+</sup></chemform>  
<chemform>H<sub>2</sub>CO<sub>3</sub></chemform>
于 2017-10-15T07:18:03.767 に答える