使用PHP Regex仅替换单个字母,而不替换成对出现的字母

我什么都不知道

这是输入字符串:

BQ^2*Z*(2*Y + Z) == AP^2*Y^2 - PQ^2*Y^2

这是所需的输出:

BQ^2*$z*(2*$y + $z) == AP^2*$y^2 - PQ^2*$y^2

我尝试使用以下正则表达式:

([A-Z])(?![A-Z])

但是,它只将第一个字符排除在替换之外。当前结果是:

B$1^2*$1*(2*$1 + $1) == A$1^2*$1^2 - P$1^2*$1^2

我应该如何更改上述正则表达式以获取正确的输出。

阿努巴瓦

您可以使用环视正则表达式:

$repl = preg_replace('/(?<![A-Z])[A-Z](?![A-Z])/', '$$0', $str);
//=> BQ^2*$Z*(2*$Y + $Z) == AP^2*$Y^2 - PQ^2*$Y^2

正则演示

RegEx说明:

  • (?<![A-Z]):后面断言我们在前面的位置没有大写字母
  • [A-Z]:匹配大写字母
  • (?![A-Z]):先行断言我们在下一个位置没有大写字母

附加说明:

对于您给定的输入,正则表达式也将起作用:

\b[A-Z]\b

但是会错过Y输入中的匹配项PQ^2*5Y^2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用jQuery将单个字母换行替换为span元素

使用jQuery替换字母

php regex匹配数字后的单个字母

使用循环替换字符串中的每个字母

替换成对元素的方案程序

使用标志性字母替换另一个字母

如何使用RegEx替换Java破折号后的字母?

PHP-不替换Õ

CountVectorizer()无法使用单个字母词

PHP用更少的字母数替换所有重复的字母

PHP - 替换字符串中的字母

使用正则表达式将python中的大写重复字母替换为单个小写字母

使用ascii_letters将字母替换为下一个字母时出错

使用grep获取仅12个字母的字母行

如何替换某个字母而不替换其他字母?

如何使用单个正则表达式替换开头和结尾是否为特定字母

如何使用索引替换列值的前两个字母

Dart:使用regxp用星号替换字符串中的每个字母

单击标题,然后使用javascript / jquery替换其最后一个字母

如何使用索引替换字符串中的多个字母

匹配字符串中的单个字符,然后在PHP中使用Regex替换该字符

如何使用正则表达式将连续的大写字母替换为小写字母?(但不能替换单个大写字符)

使用正则表达式查找和替换-仅删除字母之间的双空格

如何使用正则表达式将Java中的最后一个字母替换为另一个字母

VS Code Regex查找并替换为小写字母,如果可能,请使用\ l或\ L

将特定字母替换为范围数字,并使用php在数据库中搜索

mem ::替换成Rust

替换成vs更新

查找并替换成熊猫?