【问题标题】:Regex matching multiple occurrences per file and per line正则表达式匹配每个文件和每行多次出现
【发布时间】:2010-09-19 01:29:36
【问题描述】:

第一次发帖,就这样吧。我正在编写一个在文件树上进行智能搜索和替换的脚本。本质上,脚本将每个文件的内容放入缓冲区字符串中,并与预定义的模式进行匹配,在这种情况下,模式是/^[^\r\n]*(vendor)[^\r\n]*$/im。该模式应该找到任何不区分大小写的“供应商”形式,并给我匹配的整行。我需要查看整行以确定是否替换该事件。这种模式对于给定文件中出现的任意数量的单独行都表现良好。

但是,如果在给定的行上有多个匹配项,则该模式将仅匹配其中一个匹配项,并跳过其他匹配项。我正在尝试确定是否需要第二个模式来在匹配的行上进行额外的搜索,或者我是否可以使用完成上述所有操作的单个模式来完成此目的。

只是我希望制作的样本。单行多处匹配示例:

热情地革新 支持网络的供应商潜力 供应商安装了基础电子零售商。

我想输出类似的东西(同样,输出不是这里的问题,而是我是否可以用一种模式将它全部匹配):

一行中多次出现:|| 热情革新 支持网络的供应商潜力 供应商安装了基础电子零售商。 ||

更换? (y,n,q) || ...有能力的供应商潜力... ||

更换? (y,n,q) || ...联系供应商 insta... ||

如果我不清楚我的目标,请告诉我。感谢您对此的任何帮助和回复!

【问题讨论】:

  • 你用什么语言写的?
  • 脚本是用PHP编写的,所以正则表达式是PCRE。

标签: regex preg-replace


【解决方案1】:

如果你正在使用

/^[^\r\n]*(vendor)[^\r\n]*$/im

我建议添加 g(全局)运算符

/^[^\r\n]*(vendor)[^\r\n]*$/img

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多