【问题标题】:How to implement a regex pattern into whole file not line by line?如何将正则表达式模式实现到整个文件中而不是逐行?
【发布时间】:2011-08-04 22:14:24
【问题描述】:

如何使用 Perl 从文件中读取并将匹配的模式查找到文件中,而不是一次逐行查找整个文件?

【问题讨论】:

标签: regex perl


【解决方案1】:

通过在读取文件之前将local $/; 句柄添加到 perl 脚本的开头,将整个文件读入字符串。他们可以将您的正则表达式应用于生成的字符串。

构建包含整个文件的长 $string 后,您可以找到所有匹配项,如下所示:

@matches = $string =~ m/\s*rem/gi;

【讨论】:

  • 例如,我的字符串变量是 $string,而我的正则表达式模式是 m/\s*rem/i 那么如何根据该模式找到所有匹配的字符串,如果可能的话,同时将其写入输出在每个匹配的字符串后放置一个换行符 - \n?
  • 为了匹配所有,您需要添加g修饰符。像这样进行匹配:@matches = $string =~ m/\s*rem/gi;
  • 如何通过修改模式删除换行符?
  • 用空白$string =~ s/\n*//g;替换所有换行符
【解决方案2】:

我知道这是旧的,但我遇到了同样的问题,发现答案比选择的答案更简单。 在 perl 可执行文件之后使用 '-0777'(或任何大于 -0400 的值)与 -p 或 -n 一起使用将更改默认分隔符,并且 perl 会将整个文件放入 $_

参考资料:

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2021-09-06
    • 2015-06-12
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    相关资源
    最近更新 更多