Python迭代正则表达式,从分隔符之间提取文本
我有一个正则表达式函数,它从两个预定义分隔符(开始和结束)之间提取字符串元素: 但这只抓住了它找到的第一个匹配项;我需要的是拿到所有的火柴,这样Python迭代正则表达式,从分隔符之间提取文本,python,regex,string,Python,Regex,String,我有一个正则表达式函数,它从两个预定义分隔符(开始和结束)之间提取字符串元素: 但这只抓住了它找到的第一个匹配项;我需要的是拿到所有的火柴,这样 Findy('want', 'and', string) >>>['A','B','C'] 我已经尝试合并re.findall,但是我并不总是知道在我的开始和结束分隔符之间会存在什么模式,所以没有运气 我如何重构Findy以迭代字符串并提取所有匹配项 不知道此代码是否满足您的要求: def findy(start, end, any
Findy('want', 'and', string)
>>>['A','B','C']
我已经尝试合并re.findall,但是我并不总是知道在我的开始和结束分隔符之间会存在什么模式,所以没有运气
我如何重构Findy以迭代字符串并提取所有匹配项 不知道此代码是否满足您的要求:
def findy(start, end, anystr):
res = []
tmp = anystr.split(start)[1:]
for e in tmp:
res.append(e.split(end)[0].strip())
return res
不知道此代码是否满足您的要求:
def findy(start, end, anystr):
res = []
tmp = anystr.split(start)[1:]
for e in tmp:
res.append(e.split(end)[0].strip())
return res
使用带有“向后看”和“向前看”的正则表达式:
>>> import re
>>> string = "I want A and I want B and I want C and..."
>>> re.findall(r'(?<=want ).*?(?= and)', string)
['A', 'B', 'C']
使用带有“向后看”和“向前看”的正则表达式:
>>> import re
>>> string = "I want A and I want B and I want C and..."
>>> re.findall(r'(?<=want ).*?(?= and)', string)
['A', 'B', 'C']
以下是重新定义Findy的脚本:
from __future__ import print_function
import re
def Findy(start, end, anystring):
pattern = '{}(.*?){}'.format(start, end)
return re.findall(pattern, anystring)
string = 'I want A and I want B and I want C and...'
print(Findy('want', 'and', string))
输出:>>['A','B','C']
模式如下:
pattern='{}\s*(\s*?)\s*{}'。格式(开始、结束)
输出:
>>['A','B','C']
这是一个脚本,重新定义Findy:
from __future__ import print_function
import re
def Findy(start, end, anystring):
pattern = '{}(.*?){}'.format(start, end)
return re.findall(pattern, anystring)
string = 'I want A and I want B and I want C and...'
print(Findy('want', 'and', string))
输出:>>['A','B','C']
模式如下:
pattern='{}\s*(\s*?)\s*{}'。格式(开始、结束)
输出:
>>['A'、'B'、'C']
伟大的人物——甚至优雅!我更喜欢向前看/向后看,因为它更具可读性。谢谢你的帮助。很棒的东西,甚至很优雅!我更喜欢向前看/向后看,因为它更具可读性。谢谢你的帮助。谢谢你的帮助!这确实有效,但我不得不使用John1024的解决方案,因为它是一个单行程序。谢谢你的帮助!这确实有效,但我不得不使用John1024的解决方案,因为它是一个单行程序。