【发布时间】:2012-12-29 22:41:20
【问题描述】:
我正在尝试构建一个正则表达式,如果它没有被引用,它将使用 preg_replace 来引用表达式的右侧。
所以myvar = 3 变成了myvar = '3'。它应该只处理不带引号的连续字符串(因此,如果需要引用第一个字符串上的任何空格,例如 myvar = 3 5 将变为 myvar = '3' 5)。
我还希望它忽略任何带引号的字符串,因此不应修改 myvar = 'this is quoted'。
到目前为止,我的代码如下:
$str = 'myvar = 3';
$regex = '/([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([\w]+)/i';
$replace = '\1 \2 \'\3\'';
$result = preg_replace($regex, $replace_str, $str);
我需要在$regex 中输入什么来完成这项工作?
【问题讨论】:
-
这是您连续第五个正则表达式问题;所有这些似乎都与处理某种 JS 表达式的任务相同。看起来你依赖 Stackoverflow 来迭代地改进你没有经验的东西。也许是时候更深入地学习它了? * 另请参阅 Open source RegexBuddy alternatives 和 Online regex testing 了解一些有用的工具,或参阅 RegExp.info 了解更好的教程。
-
@mario 感谢您的资源,我会看看它们。我无法告诉你我从 stackoverflow 上的回复中学到了多少。因为我不是一个完整的菜鸟,我只需要一些方向。通常,当您对最佳方法获得良好响应时,您就可以更轻松地了解接下来要重点学习什么。
-
stackoverflow.com/a/4209320/1533203这就是你要找的东西?
-
@DavidHarris 谢谢。我认为这是我可以针对我需要做的事情进行调整的事情。