0

我的文本可以包含可能出现 1x 的数学表达式,或者更一般地说,一个 1 后跟一个字母。我想要做的是用正则表达式重写文本中的数学,以便所有出现的 1x 都被 x 替换,但不是这样,即。21 倍变为 2 倍。此外,文本中的数学在 # 定界符内,只有在定界符之间时才应替换 1x。

一个示例文本是:

“作为第一步,您可以重写 #21x*x - 1y# 等于 #1z + 1#”

这必须成为

“作为第一步,您可以重写 #21x^2 - y# 等于 #z + 1#”

到目前为止,我所拥有的正则表达式模式是

'/(#.*?)(\D?)1([a-z])(.*?#)/i'

并作为替代品

'$1$2$3$4'

但它没有做这项工作。任何有关该模式的帮助将不胜感激。

谢谢

4

1 回答 1

2

对于您提供的示例,您可以使用:

\b1([a-z])

并将所有出现/匹配替换为$1.

演示

编辑:这个问题有一个误解,所以,一个可以使用的正则表达式也1st不会被替换:

\b1([a-z])(?=[^#]*#[^#]*(?:[^#]*#[^#]*#[^#]*)*$)

演示

(?=[^#]*#[^#]*(?:[^#]*#[^#]*#[^#]*)*$)基本上确保前面有奇数个哈希。

于 2013-07-22T19:51:18.480 回答