python - ReGex:从重复序列中获取多个匹配

标签 python regex

我正在尝试使用正则表达式在 python 中分割多行字符串。我的正则表达式经验有限。

字符串的结构如下:

asdf
foo 1
bar
barfoo
bar
foo 2
baz 
baz 
...
foo 20 
bat
bat

我正在寻找一个可以找到多个匹配项的表达式,因为目前我只能找到所有内容或什么也找不到。所以输出应该是这样的:

["foo 1\nbarbarfoobar","foo 2 \nbaz\nbaz\n...",...]

据我了解,我应该寻找 foo\d+ 后跟一些随机的东西... ((\n|.*)?)*

foo \d+((\n|.*)?)*

我研究过否定前瞻,但插入一个对我没有帮助。

foo \d+((\n|.*)?)*(?!foo)

我想这可以通过仅使用内置的 String 方法来解决,但稍后我将不得不做很多这样的事情,所以我正在寻找一个“简单”的方法解决方案。

最佳答案

([\s\S]+?(?=(?:\nfoo \d+|$)))

您可以使用 re.findall 尝试此操作。请参阅演示。

https://regex101.com/r/mT0iE7/5

关于python - ReGex:从重复序列中获取多个匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211966/

相关文章:

c# - 正则表达式仅返回字符串的一部分

python - 为什么我不能将数组分配给 pandas DataFrame 列?

python - Xpath:如何获取 <p> 标签内 <a> 标签的文本

python - 跳出两个循环

python - 如何让QTableView在再次加载数据后刷新背景颜色

python - 大部件的矢量幅度

html - 在 ruby​​ 上使用 xpath 获取 html 片段的前几个元素

javascript - 从字段中删除 GUID(如果存在)

正则表达式提取所有内容,直到遇到斜杠后的数字

Python:正则表达式在空格上分割(但在[]中保持元素不分割)并在数组中添加 ""作为换行符