【发布时间】:2017-12-18 09:45:14
【问题描述】:
这里要更改的文字:
'db' => [
'connectionString' => 'mysql:host=localhost;dbname=bob',
'emulatePrepare' => true,
'username' => 'local',
'password' => 'local',
'charset' => 'utf8',
],
预期结果:
'db' => [
'connectionString' => 'mysql:host=localhost;dbname=bob',
'emulatePrepare' => true,
'username' => 'alice',
'password' => 'local',
'charset' => 'utf8',
],
sed 命令:
sed -E "s#('db'[ ]*=>[ ]*\[)((\n*?.*?|^\t*.*\n)*)('username'[ ]*=[ ]*>[ ]*)'.*'#\1\2\4'alice'#" textTochange.txt
我的正则表达式在https://regex101.com/ 上工作没有问题,在 PHP 中使用 preg_replace 像魅力一样工作,但没有 sed :(
【问题讨论】:
-
php使用与sed不兼容的正则表达式风格。此外,您正在匹配多行字符串。perl或awk更适合这种情况。 -
感谢您的帮助@anubhava!我已经用答案编辑了我的问题:)
-
@GillesGrandguillaume 解决方案应该放在答案中,而不是问题中。您可以回答自己的问题。
-
@Barmar 好的,完成。