gpt4 book ai didi

PHP Regex 帮助(从 preg_match_all 转换为 preg_replace)

转载 作者:搜寻专家 更新时间:2023-10-31 20:48:53 24 4
gpt4 key购买 nike

我在将一些正则表达式从 preg_match_all 中使用转换为 preg_replace 中使用时遇到了一些困难。

基本上,仅通过正则表达式,我想匹配前面有空格、文本开头或连字符的大写字符。这不是问题,我有以下效果很好的方法:

preg_match_all('/(?<= |\A|-)[A-Z]/',$str,$results);
echo '<pre>' . print_r($results,true) . '</pre>';

现在,我想做的是使用 preg_replace 只返回符合我上面的条件的大写字符的字符串。如果我将正则表达式直接移植到 preg_replace,那么它显然会替换我想保留的字符。

任何帮助将不胜感激:)

此外,我完全知道正则表达式在效率方面并不是最佳解决方案,但我还是想使用 preg_replace。

最佳答案

根据 De Morgan's laws ,
如果你想保留那些字母

  • A-Z
  • 前面有[空格]\A-

那么你想要删除的字符是

  • 不是A-Z
  • [space]\A-
  • 开头

也许这个(用空字符串替换匹配项)?

/[^A-Z]|(?<! |\A|-)./

参见 example here .

关于PHP Regex 帮助(从 preg_match_all 转换为 preg_replace),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10322909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com