如何使用正则表达式获取单词 "foo" 之后的所有单词 "bar"
How to get all the words "bar" after the word "foo" with regex
我正在尝试检索单词 foo 之后出现的所有 word 栏。
以下内容:
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
我想获取my_delimiter之后的人的名字:
两件事,取决于你到底在追求什么:
如果你在一行中出现所有事件,那么你需要使用 re.findall
:
exp = re.compile("foo(?:.*?((bar)+)*)") # See https://regex101.com/r/zzBFFb/1
match = exp.findall(mystring)
如果你像上面那样出现在多行之后,那么你需要添加一些标志来告诉它不要区别对待换行符:
exp = re.compile("foo(?:.*?((bar)+)*)", re.DOTALL | re.MULTILINE)
match = exp.findall(mystring)
更新答案后,不需要正则表达式回溯,您可以使用这样的正则表达式来查找定界符后的名字:
my_delimiter:\s+name:\s*(.*)
另一方面,如果您希望所有名称都在分隔符之后,那么您可以使用这样的正则表达式技巧,然后从捕获组中获取内容:
[\s\S]*my_delimiter|name:\s*(.*)$
捕获组存储以绿色突出显示的数据。
我正在尝试检索单词 foo 之后出现的所有 word 栏。
以下内容:
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
我想获取my_delimiter之后的人的名字:
两件事,取决于你到底在追求什么:
如果你在一行中出现所有事件,那么你需要使用
re.findall
:exp = re.compile("foo(?:.*?((bar)+)*)") # See https://regex101.com/r/zzBFFb/1 match = exp.findall(mystring)
如果你像上面那样出现在多行之后,那么你需要添加一些标志来告诉它不要区别对待换行符:
exp = re.compile("foo(?:.*?((bar)+)*)", re.DOTALL | re.MULTILINE) match = exp.findall(mystring)
更新答案后,不需要正则表达式回溯,您可以使用这样的正则表达式来查找定界符后的名字:
my_delimiter:\s+name:\s*(.*)
另一方面,如果您希望所有名称都在分隔符之后,那么您可以使用这样的正则表达式技巧,然后从捕获组中获取内容:
[\s\S]*my_delimiter|name:\s*(.*)$
捕获组存储以绿色突出显示的数据。