你能不能给我一些建议,我正在替换我的维基中不再使用的<chemform>
代码......字符串通常很简单:
<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 tool的正则表达式:
匹配:<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>
如何在不进行第二次替换搜索的情况下摆脱这些?非常感谢!
答案 0 :(得分:0)
您可以使用Notepad ++,它可以继续进行条件替换(您可以在previous post的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>