正则表达式以匹配变量或字符串的值(带或不带引号)

马尼奇

这是我的难题:

我编写了此RegEx模式,该模式可在我的沙箱中使用,但不适用于我的网站:

沙盒:http//regex101.com/r/vP3uG4

模式:

(.*[$]'.$variable.'\s*=\s*\'?)(.*?)(\'?;.*)

代码行是这样的:

$savedsettings_new = preg_replace('/(.*[$]'.$variable.'\s*=\s*\'?)(.*?)(\'?;.*)/is','$1'. $value .'$3',$savedsettings_temp);

如您所见,它可以在沙盒上运行,但不能实时运行。

我正在尝试匹配变量的值,这些变量的值可以表示为字符串(用单引号引起来)或不带引号的数值,例如:

$match_string = 'value';
$match_number = 1;

现在,这段代码可以很好地处理字符串,但是可以使用数字变量,而这些数字变量没有包含在字符串中,我只得到反向引用$ 3的内容,在此之前我什么也没得到!

我抓挠头,真的不知道为什么它能在RegEx101上工作但不能正常工作……当匹配一个或没有单引号(并且转义它们,因为preg_replace带有引号时,我做错了吗?)

阿马尔·穆拉利(Amal Murali)

好的,找出问题所在。解决方案是将反向引用包装在中${}

引用PHP手册

当使用在反向引用后紧跟另一个数字的替换模式(即:在匹配模式后立即放置文字数字)时,您不能使用熟悉的\\1符号作为反向引用。\\11,例如,会使preg_replace()感到困惑,因为它不知道是要\\1使用文本1\\11反向引用,还是不使用文本反向引用。在这种情况下,解决方案是使用\${1}1

因此,您的代码应如下所示:

header('Content-Type: text/plain');

$variable = 'tbs_development';
$value = '333';

$savedsettings_temp = <<<'CODE'
$tbs_underconstruction = 'foo';
$tbs_development = 0;
CODE;

$pattern = '/(.*[$]'.preg_quote($variable).'\s*=\s*\'?)(.*?)(\'?;.*)/is';
$replacement = '${1}'.$value.'${3}';

$savedsettings_new = preg_replace($pattern, $replacement, $savedsettings_temp);

echo $savedsettings_new;

输出:

$tbs_underconstruction = 'foo';
$tbs_development = 333;

演示

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式可以匹配任何带引号的字符串或特定的不带引号的字符串

来自分类Dev

使用正则表达式捕获不带引号的双引号内的字符串

来自分类Dev

正则表达式使用不带引号的键/值对中的空格分割字符串

来自分类Dev

Python正则表达式将带引号的字符串与转义的单引号匹配

来自分类Dev

正则表达式匹配忽略双引号的带引号的字符串

来自分类Dev

正则表达式匹配带特殊字符或不带重音字符的字符串?

来自分类Dev

javascript正则表达式以匹配带数字和不带数字的字符串

来自分类Dev

正则表达式匹配带或不带捕获组的字符串

来自分类Dev

匹配不带正则表达式的字符串

来自分类Dev

正则表达式检索带引号的字符串和引号字符

来自分类Dev

正则表达式处理带引号的字符串和双引号英寸

来自分类Dev

javascript正则表达式选择带引号的字符串,但不转义引号

来自分类Dev

Golang正则表达式替换不包括带引号的字符串

来自分类Dev

正则表达式查找带引号的字符串中的所有大括号

来自分类Dev

正则表达式用_(Sublime)替换带引号的字符串中的空格

来自分类Dev

正则表达式查找带引号的字母的字符串

来自分类Dev

正则表达式查找带引号的字符串中的所有大括号

来自分类Dev

无法在ruby中使用正则表达式突出显示带引号的字符串

来自分类Dev

PHP 正则表达式提取带引号和括号的子字符串

来自分类Dev

Java正则表达式提取带或不带引号的字段

来自分类Dev

正则表达式不带引号

来自分类Dev

将不带引号的特定单词与正则表达式匹配

来自分类Dev

如何使用正则表达式匹配单引号或双引号中的字符串

来自分类Dev

正则表达式匹配忽略双引号的双引号字符串

来自分类Dev

如何使用正则表达式匹配不带双字符的字符串

来自分类Dev

正则表达式在不带字符串的情况下匹配字符

来自分类Dev

如何使用正则表达式匹配不带双字符的字符串

来自分类Dev

正则表达式搜索字符串中带双引号的单词

来自分类Dev

拆分字符串,不带正则表达式

Related 相关文章

  1. 1

    正则表达式可以匹配任何带引号的字符串或特定的不带引号的字符串

  2. 2

    使用正则表达式捕获不带引号的双引号内的字符串

  3. 3

    正则表达式使用不带引号的键/值对中的空格分割字符串

  4. 4

    Python正则表达式将带引号的字符串与转义的单引号匹配

  5. 5

    正则表达式匹配忽略双引号的带引号的字符串

  6. 6

    正则表达式匹配带特殊字符或不带重音字符的字符串?

  7. 7

    javascript正则表达式以匹配带数字和不带数字的字符串

  8. 8

    正则表达式匹配带或不带捕获组的字符串

  9. 9

    匹配不带正则表达式的字符串

  10. 10

    正则表达式检索带引号的字符串和引号字符

  11. 11

    正则表达式处理带引号的字符串和双引号英寸

  12. 12

    javascript正则表达式选择带引号的字符串,但不转义引号

  13. 13

    Golang正则表达式替换不包括带引号的字符串

  14. 14

    正则表达式查找带引号的字符串中的所有大括号

  15. 15

    正则表达式用_(Sublime)替换带引号的字符串中的空格

  16. 16

    正则表达式查找带引号的字母的字符串

  17. 17

    正则表达式查找带引号的字符串中的所有大括号

  18. 18

    无法在ruby中使用正则表达式突出显示带引号的字符串

  19. 19

    PHP 正则表达式提取带引号和括号的子字符串

  20. 20

    Java正则表达式提取带或不带引号的字段

  21. 21

    正则表达式不带引号

  22. 22

    将不带引号的特定单词与正则表达式匹配

  23. 23

    如何使用正则表达式匹配单引号或双引号中的字符串

  24. 24

    正则表达式匹配忽略双引号的双引号字符串

  25. 25

    如何使用正则表达式匹配不带双字符的字符串

  26. 26

    正则表达式在不带字符串的情况下匹配字符

  27. 27

    如何使用正则表达式匹配不带双字符的字符串

  28. 28

    正则表达式搜索字符串中带双引号的单词

  29. 29

    拆分字符串,不带正则表达式

热门标签

归档