0

我试图找到两个词之间的所有内容(不打算说出哪两个词,因为我不希望人们尖叫“你不能用正则表达式解析 x,而是使用 x 解析器)。我很容易找到开始词和结束词 - 除了结束词不是第一个遇到的词。

我正在使用的是这样的:startword((.*\n)*)endword

这并不像留下结尾词那么糟糕,然后它会匹配到文档的末尾。然而,这不是我需要的。

我读过无数文章说我想要的是一个非贪婪或懒惰的搜索,应该通过放置一个 ? 之后 **。当我在 KATE 中尝试时,它什么都不匹配(startword((.*\n)*?)endword)。

我也对另一种行为感到困惑 - 我有一些文本出现 endword\n\s**endword 但是当我用它来结束比赛时,它也失败了。但是 match endword\n\s*endword 本身按预期运行。

有没有办法在 KATE 中做懒惰的正则表达式,或者任何人都可以想出另一个解决方案?

谢谢。

4

1 回答 1

0

出于某种原因(可能与我对正则表达式的理解不足有关),我之前尝试过的东西终于奏效了。与其在起始词和结束词之间有不定行数,我可以将其指定为形式中的不定行数(startword2.*endword2)*

这消除了进行惰性评估的需要。

于 2020-07-16T15:48:51.290 回答