Ruby正则表达式为化学式下标/上标

时间:2017-12-11 18:55:50

标签: html ruby regex

我想用sub和sup标签代替化学式,例如C7 [2H] 5NaO2,得到结果:

C<sub>7</sub>[<sup>2</sup>H]<sub>5</sub>NaO<sub>2</sub>

标签内的数字可以是两位数字。到目前为止,我知道/(\ d +)/将匹配所有数字,而/ [(\ d +)/匹配[之后的数字,但我不知道如何将这两者结合起来。

1 个答案:

答案 0 :(得分:0)

我会分两步完成。

首先,用sup标记包围的相同数字替换前面带有字母的数字。

匹配:(?<=[A-Z])\d+

替换:<sup>\0</sup>

然后获取结果并将[前面的数字替换为sub标记所包围的相同数字:

匹配:(?<=\[)\d+

替换:<sub>\0</sub>