【发布时间】:2016-05-31 21:57:15
【问题描述】:
比如说,一个文本文件有很多 $start-$end 对,每对中都有一些文本。我希望 Perl 用 $start-$end 对查找并替换所有 $patterns;如果 $pattern 不在这对中,则不要替换它。例如文本:
xx START xx bingo xx bingo xx END xx bingo xx START xx bingo xx END bingo
文本中可能有换行符(此处未显示); $pattern 在一对中可能出现多次。预期结果是:
xx START xx okyes xx okyes xx END xx bingo xx START xx okyes xx END bingo
这项工作看起来很简单,但我只是想不出一个 Perl 正则表达式来完成它。有人能帮忙吗?
【问题讨论】:
-
你的模式总是单字吗?
-
惰性量词:
(?:START)(.+?)(?:END)- 并在$1中搜索/替换宾果游戏。尽管更真实的输入可能会有所帮助,尤其是换行符等。 -
@Sobrique 目前,是的,应该只是单个单词。
-
@WiktorStribiżew 是的!我不明白令人生畏的正则表达式,但它确实有效!我想我会非常非常仔细地研究这个表达方式。