php - 带替换的 sed 正则表达式

标签 php regex replace sed

给定一个文件:

<?

$dbo = mysql_fetch_assoc();

$dbo->employee_id;

$dbo->employee_name;

$dbo->dirt;

$dbo->dirt23;

$dbo->dirt_2_3;

?>

并使用 sed 查找和替换:

sed -e "s|$dbo->([\w\_]*)|$dbo['\1']|g" test.php

它总是返回一个错误。我试过使用撇号作为容器并正确转义所有内容并使用正斜杠作为命令分隔符,但无济于事。

结果应该是:

<?

$dbo = mysql_fetch_assoc();

$dbo['employee_id'];

$dbo['employee_name'];

$dbo['dirt'];

$dbo['dirt23'];

$dbo['dirt_2_3'];

?>

请帮忙。

最佳答案

一些错误:

  1. \w 已经包含下划线
  2. $ 需要转义
  3. 方括号需要去掉
  4. 你在双引号内使用 $ 而被 shell 扩展

使用以下 sed:

sed -r 's/(\$dbo->)([[:alnum:]_]+)(.*)$/\1["\2"]\3/g'

或在 OSX 上:

sed -E 's/(\$dbo->)([[:alnum:]_]+)(.*)$/\1["\2"]\3/g'

对于使用单引号:

sed -r "\$s/(dbo->)([a-zA-Z0-9_]+)(.*)$/\1['\2']\3/g"

关于php - 带替换的 sed 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774453/

相关文章:

php创建DOM元素并使用ajax发送

c# - 如何验证(特定国家/地区)电话号码

linux - 在子目录中搜索相同的文件并替换所有子目录中的字符串

php - 如何使用 the_permalink();选择数据库查询中的wordpress?

php - 当我通过 API 从 Laravel 中的数据库获取用户数据时出现错误

php - MySQL 对一个表字段进行精确词存在检查

PHP PCRE 模式

regex - 匹配双斜线但不是 http ://or https://

java - 用一个下划线替换点序列

java - 正则表达式查找带方括号的字符串并替换