我使用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[^+/_-])
:正向前瞻,断言前面有一个单词字符,后面跟着一个不是+
、/
、_
和-
的字符