如何在 preg_replace 模式中使用正则表达式特殊字符

苏加玛·文卡特桑

我正在尝试将 2.0 替换为堆栈,

但以下代码将 2008 替换为 2.08

以下是我的代码:

$string = 'The story is inspired by the Operation Batla House that took place in 2008 ';
$tag = '2.0';
$pattern = '/(\s|^)'.($tag).'(?=[^a-z^A-Z])/i';
echo preg_replace($pattern, '2.0', $string);
维克多·斯特里比尤夫

使用preg_quote并确保将正则表达式分隔符作为第二个参数传递:

$string = 'The story is inspired by the Operation Batla House that took place in 2008 ';
$tag = '2.0';
$pattern = '/(\s|^)' . preg_quote($tag, '/') . '(?=[^a-zA-Z])/i';
//                     ^^^^^^^^^^^^^^^^^^^^^
echo preg_replace($pattern, '2.0', $string);

字符串未修改。请参阅PHP 演示这里的正则表达式分隔符是/,因此它作为第二个参数传递给preg_quote.

请注意,[^a-z^A-Z]匹配除 ASCII 字母之外的任何字符,并且^因为您^在字符类中添加了第二个字符。我换[^a-z^A-Z][^a-zA-Z]

此外,开头的捕获组可能会替换为单个后视, (?<!\S),它将确保您的匹配仅发生在字符串开头或空格之后。

如果你希望也匹配字符串的结尾,替换(?=[^a-zA-Z])(即需要比立即到当前位置的右侧的字母以外的字符)与(?![a-zA-Z])(需要除字母以外的字符或字符串的结尾立即向右当前位置)。

所以,使用

$pattern = '/(?<!\S)' . preg_quote($tag, '/') . '(?![a-zA-Z])/i';

另外,考虑使用明确的词边界

$pattern = '/(?<!\w)' . preg_quote($tag, '/') . '(?!\w)/i';

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在preg_replace中使用数组和正则表达式作为模式?

来自分类Dev

如何在preg_replace中将数组和正则表达式用作模式?

来自分类Dev

在PHP中我如何在preg_replace中使用两个正则表达式?

来自分类Dev

正则表达式中使用 preg_replace 的特殊字符问题

来自分类Dev

PHP,正则表达式-如何使用preg_replace逃逸\ n?

来自分类Dev

使用正则表达式模式的preg_replace

来自分类Dev

使用正则表达式模式的preg_replace

来自分类Dev

如何在模式的preg_replace中使用变量?

来自分类Dev

如何在字符串上preg_replace模式

来自分类Dev

如何在PHP中使用preg_replace()?

来自分类Dev

如何在两行上使用preg_replace

来自分类Dev

正则表达式:Preg_replace除½以外的所有特殊字符

来自分类Dev

如何用preg_replace和PHP替换特殊字符?

来自分类Dev

如何仅使用preg_replace检查模式是否匹配

来自分类Dev

如何使用preg_replace和regex表达式替换php文件中的代码块?

来自分类Dev

嵌套引号preg_replace正则表达式

来自分类Dev

Preg_replace正则表达式日期

来自分类Dev

正则表达式preg_replace php

来自分类Dev

PHP正则表达式-preg_replace

来自分类Dev

preg_replace正则表达式HTML

来自分类Dev

在preg_replace中编写正则表达式

来自分类Dev

如何从preg_replace结果中删除模式填充?

来自分类Dev

如何从preg_replace结果中删除模式填充?

来自分类Dev

无论输入如何,如何使用preg_replace?

来自分类Dev

如何用preg_replace在字符串中给空格?

来自分类Dev

如何使用preg_replace替换链接和图像链接

来自分类Dev

PHPExcel-如何使用preg_replace替换文本

来自分类Dev

如何使用preg_replace进行空格和大写?

来自分类Dev

使用preg_replace如何包含撇号和引号

Related 相关文章

  1. 1

    如何在preg_replace中使用数组和正则表达式作为模式?

  2. 2

    如何在preg_replace中将数组和正则表达式用作模式?

  3. 3

    在PHP中我如何在preg_replace中使用两个正则表达式?

  4. 4

    正则表达式中使用 preg_replace 的特殊字符问题

  5. 5

    PHP,正则表达式-如何使用preg_replace逃逸\ n?

  6. 6

    使用正则表达式模式的preg_replace

  7. 7

    使用正则表达式模式的preg_replace

  8. 8

    如何在模式的preg_replace中使用变量?

  9. 9

    如何在字符串上preg_replace模式

  10. 10

    如何在PHP中使用preg_replace()?

  11. 11

    如何在两行上使用preg_replace

  12. 12

    正则表达式:Preg_replace除½以外的所有特殊字符

  13. 13

    如何用preg_replace和PHP替换特殊字符?

  14. 14

    如何仅使用preg_replace检查模式是否匹配

  15. 15

    如何使用preg_replace和regex表达式替换php文件中的代码块?

  16. 16

    嵌套引号preg_replace正则表达式

  17. 17

    Preg_replace正则表达式日期

  18. 18

    正则表达式preg_replace php

  19. 19

    PHP正则表达式-preg_replace

  20. 20

    preg_replace正则表达式HTML

  21. 21

    在preg_replace中编写正则表达式

  22. 22

    如何从preg_replace结果中删除模式填充?

  23. 23

    如何从preg_replace结果中删除模式填充?

  24. 24

    无论输入如何,如何使用preg_replace?

  25. 25

    如何用preg_replace在字符串中给空格?

  26. 26

    如何使用preg_replace替换链接和图像链接

  27. 27

    PHPExcel-如何使用preg_replace替换文本

  28. 28

    如何使用preg_replace进行空格和大写?

  29. 29

    使用preg_replace如何包含撇号和引号

热门标签

归档