我试图只针对字符串中非数字字符后面的数字来添加一些HTML标记。
目前,我可以在每个数字上这样做:

$string = preg_replace('/(\d+)/','<sub>\1</sub>', $string );

我怎么做才能瞄准非数字字符后面的数字呢?
目标是格式化包含化学公式的字符串,而不是其周围的文本。
实际上20% O2 in N2变成<sub>2</sub><sub>0</sub>% O<sub>2</sub> in N<sub>2</sub>
我想改成20% O<sub>2</sub> in N<sub>2</sub>
我该怎么做呢?有可能吗?
非常感谢你的帮助

最佳答案

我怎么做才能瞄准非数字字符后面的数字呢?
对于字母后面的数字,请尝试使用lookbehind

(?<=[A-Za-z])\d+

See demo at regex101(替换为<sub>\0</sub>
对于unicode字母,请将\pL instead of [A-Za-z]uflag一起使用。

关于php - PHP特定的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42227119/

10-13 08:11