我试图只针对字符串中非数字字符后面的数字来添加一些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]
与u
flag一起使用。关于php - PHP特定的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42227119/