【发布时间】:2025-12-11 18:55:01
【问题描述】:
我有以下字符串,我尝试将对应的“foo”中的字符串匹配到“bar=1”、“bar=2”或“bar=3”。所以一次只有一场比赛。
file_header
foo lorem ipsum \pope
24 dolor sit amet, consectetur adipisici elit
Excepteur sint obcaecat cupiditat non
gnu blu bar=1
foo lorem ipsum \
@>@!@ consectetur adipisici elit
gnu blu bar=2
foo lorem ipsum
23 dolor sit amet, consectetur adipisici elit
gnu blu bar=3
foo ... etc
我尝试了所有方法,从简单的^foo.*?bar=2$ 到类似^(?!\bfoo\b.*\bfoo\b).*\bfoo\b.*bar=2$。但是激活多行和dotall 后,它将始终匹配第一个'foo',甚至标记整个文件头。 :(
在使用 multiline 和 dotall 时,似乎不可能进行非贪婪行为。
【问题讨论】:
-
那么,寻找类似
^foo(?:(?!^foo|bar=2$).)*bar=2$的东西? -
1) 您是在尝试匹配还是搜索? 2) 请提供一个简短、完整的程序来证明您的错误。说“我什么都试过了”并没有你想象的那么有用。相反,请在一个完整程序中向我们展示您尝试过的一件特别的事情。请参阅minimal reproducible example,了解有关提出能够产生出色答案的问题的更多信息。
-
@Robᵩ 我只是在 pythex.org 上进行试验,还没有任何 python 代码。这就是为什么我不知道匹配和搜索之间有区别。 (我需要搜索)