繁体   English   中英

正则表达式搜索和替换项目中的文件

[英]Regex search and replace files in project

我正在尝试将'class'=>'smart-form'更改为'class'=>'smart-form','target'=>'_blank'

我使用以下正则表达式来搜索所有符合此条件的项目文件中的行(我使用regex101工具生成了以下正则表达式):

\<\?php \$form = ActiveForm::begin\(\['id' => 'my-form', 'action'=>\['(\w*)\/(\w*)'\], 'options'=>\[('class'=>'smart-form')]]\); \?>

当我使用Atom编辑器搜索项目文件中的行时,它匹配得很好

但是,我不能使用replace字段使用此替换来替换那些行:

$3,'target'=>'_blank'

是否有用于Atom编辑器的软件包来优化此任务?

作为替代,我可以使用sed(或者可能是MINGW32提供的bash工具的组合),但是我应该使用什么命令?,我对使用此工具没有经验。

片段: https//regex101.com/r/nC4hI0/1

除了完成整个字符串,您还可以匹配要替换的部分吗?

('class'=>'smart-form')

然后,您的替换项$1,'target'=>'_blank'将在不删除其余匹配项的情况下起作用。

如果这还不够具体,那么我想解决的第一个解决方案就是在每个零件的前后添加捕捉,并进行替换,例如$1$4,'target'=>'_blank'$5 (数字可能需要调整为是正确的。

sed '\#\<?php \$form = ActiveForm::begin(\['id' => 'my-form', 'action'=>\['([[:alnum:]_]*)\/([[:alnum:]_]*)'\], 'options'=>\[('class'=>'smart-form')\]\]); ?># {
   s/'class'=>'smart-form'/&,'target'=>'_blank'/
   }' YourFile
  • posix sed版本
  • 将您的所有指纹都用作正则表达式,但是对于您的实际需求而言肯定太大了
  • 假设正则表达式匹配是一个完整的行(如果在多行中进行了解析或其他信息可能出现在同一行中,则应进行更改)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM