【问题标题】:RegEx for capturing and replacing a string with quotes用于捕获和用引号替换字符串的正则表达式
【发布时间】:2019-05-18 20:27:02
【问题描述】:

我想在函数中str_replace

尝试

str_replace(array('(', ')', array('"', '\'')), array('\(', '\)', '["|\']'), 'hello("test")');

期望的输出:

hello\(["|']test["|']\)

这可行,但不是很有用:

str_replace(array('"', '\''), '["|\']', str_replace(array('(', ')'), array('\(', '\)'), 'hello("test")'));

我该如何解决这个问题?

【问题讨论】:

  • 做一个array_merge,魔法就完成了吗?
  • 我不清楚“数组中的数组”是什么意思,但echo str_replace('"', '["|\']', 'hello"test"'); 会产生你的输出。
  • @ggorlen 我需要与(和)一起使用,用户正在写入数据,我不知道写的是哪一个“,”。你好“测试”不是静态的。也许它可能是你好'测试'
  • 请提供更多涵盖您所有期望的输入和输出示例。
  • @ggorlen 我更新了问题,请再次检查

标签: php regex str-replace regex-group regex-greedy


【解决方案1】:

在这里,我们可能想要捕获hellotest,然后使用preg_replace 组装我们喜欢的内容:

$re = '/(.*)\("(.+)"\)/m';
$str = 'hello("test")';
$subst = "$1\([\"|']$2[\"|'\"]\)";

$result = preg_replace($re, $subst, $str);

echo $result;

输出

hello\(["|']test["|'"]\)

正则表达式

正则表达式

您可以在regex101.com 中修改/更改您的表达方式。

正则表达式电路

您还可以在jex.im 中可视化您的表达式:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2013-07-18
    相关资源
    最近更新 更多