一尘不染

正则表达式,选择最接近的匹配项

python

假设以下单词顺序

BLA text text text  text text text BLA text text text text LOOK text text text BLA text text BLA

我想做的是将文本从BLA提取到LOOK,但是最接近外观的BLA。即我想得到

BLA text text text text LOOK

我应该如何使用正则表达式呢?我得到了一个可行的解决方案,但是效率极低。

BLA(?!.*?BLA.*?LOOK).*?LOOK

有没有更好,更高效的方法来实现此模式的匹配?

我想做的是:我想匹配BLA,然后向前进行前瞻,直到使用LOOK进行正向前进或使用BLA进行负向前进。但是我不知道将其放入正则表达式中的方法。

作为引擎,我在python中使用re。


阅读 222

收藏
2020-12-20

共1个答案

一尘不染

(?s)BLA(?:(?!BLA).)*?LOOK

尝试这个。参见演示

或者,使用

BLA(?:(?!BLA|LOOK)[\s\S])*LOOK

为了更安全。

2020-12-20