如何在regex中获得单词foo之后的所有单词bar

2024-06-16 11:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试检索单词foo之后出现的所有单词条。你知道吗

内容如下:

fuu

bar

faa

foobar fuu

bar fuubar

bar

bar fuu

我要检索所有粗体的条,忽略斜体格式的第一条。你知道吗

我尝试使用以下正则表达式:

(?<=foo)bar

但这只是第一次发生。你知道吗

更新

谢谢你们的支持。 下面的数据更接近现实:

Some data

name: Person 1

Some data

my_delimiter:

 name: Person 2

 Some data

name: Person 3

Some data

 name: Person 4

 Some data

Some data

我想在我的\u分隔符之后获取人员的姓名:

我在这里测试https://regex101.com/r/HrCLva/2


Tags: name内容datafoo格式barsome单词
2条回答

两件事,取决于你到底在追求什么:

  1. 如果要在一行上查找所有匹配项,则需要使用re.findall

    exp = re.compile("foo(?:.*?((bar)+)*)") # See https://regex101.com/r/zzBFFb/1
    match = exp.findall(mystring)
    
  2. 如果您要在上面的多行上执行所有事件,则需要添加一些标志,以告诉它不要以不同的方式处理换行:

    exp = re.compile("foo(?:.*?((bar)+)*)", re.DOTALL | re.MULTILINE) 
    match = exp.findall(mystring)
    

更新答案后,您不需要regex lookback,您可以使用这样的regex查找分隔符后的名字:

my_delimiter:\s+name:\s*(.*)

Working demo

另一方面,如果您希望所有名称都在分隔符之后,则可以使用如下正则表达式技巧,然后从捕获组中获取内容:

[\s\S]*my_delimiter|name:\s*(.*)$

Working demo 2

捕获组存储以绿色突出显示的数据。你知道吗

enter image description here

相关问题 更多 >