将匹配文本的每个字符替换为特定文本

  • 本文关键字:文本 替换 字符 regex pcre
  • 更新时间 :
  • 英文 :


我使用PCRE正则表达式,并且在替换匹配文本的每个单词时遇到问题。

我使用此模式将所需的文本与分组进行匹配:

(?<=^|[_-/:]w)(w+?)(?=w[_-/:]|$)

示例文本是这样的:

yVOdbtnRWSkpgi0iDWeRtyynyREV7yVKyNuJmsFmpSPtnlXaLb/Ik4zuyJFwqRWCGeIRp7m3Cef9kSjvCIrFG4iaweaB49WecZoNP8CTta79kVXpAcIVohHnsLcJ5+

我想将分组匹配($1)的所有字符转换为?i:

yV?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?iLb/Ik?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?i?iJ5+

我该怎么做?

您可以使用此正则表达式搜索:

~(?<=[^+/_-]w)w(?=w[^+/_-])~

并替换使用:

?i

RegEx演示

代码:

$repl = preg_replace('~(?<=[^+/_-]w)w(?=w[^+/_-])~', '?i', $str);

RegEx演示

  • (?<=[^+/_-]w):肯定查找,断言我们有一个字符不是+/_-,后面跟一个单词字符,后面跟在前一个位置
  • w:匹配单词字符
  • (?=w[^+/_-]):正向前瞻,断言前面有一个单词字符,后面跟着一个不是+/_-的字符

相关内容

  • 没有找到相关文章

最新更新