Python 熊猫,str.extract不适用于我的正则表达式?

Python 熊猫,str.extract不适用于我的正则表达式?,python,pandas,Python,Pandas,您好,我正在尝试使用str.extract()提取子字符串,但它不想工作 我的正则表达式 regex=r'(An+.+,$)' dataset['Sprint']=dataset['URL'].str.extract(regex) 我想用粗体字摘录: [id=5548,rapidViewId=2968,state=ACTIVE,name=Anki Sprint 1.12 glu,startDate=2020-03-09T09:21:24.412+01:00,endDate=2020-03-31

您好,我正在尝试使用str.extract()提取子字符串,但它不想工作

我的正则表达式

regex=r'(An+.+,$)'
dataset['Sprint']=dataset['URL'].str.extract(regex)
我想用粗体字摘录:

[id=5548,rapidViewId=2968,state=ACTIVE,name=Anki Sprint 1.12 glu,startDate=2020-03-09T09:21:24.412+01:00,endDate=2020-03-31T23:59:00.000+02:00,completeDate=,sequence=5548,goal=]

为什么不在name上使用regex

dataset['Sprint'] = df['URL'].str.extract("name=(.*?),")
为什么不在名字上加正则表达式呢

dataset['Sprint'] = df['URL'].str.extract("name=(.*?),")

问题在于如何定义正则表达式,正则表达式的意思是“提取字符串匹配:一个字符“a”,带有1个或多个字符“n”,带有1个或多个任意字符(行终止符除外),一个字符“,”和在行的末尾”。如果您仔细想想,您无法与示例中的描述相匹配,因为行尾没有逗号。您可以使用这个有用的函数尝试正则表达式,它可以很好地解释正则表达式

解决这个问题,你可以做到

regex=r'(An[a-zA-Z0-9\s]+[a-zA-Z0-9\s]+),'
dataset['Sprint']=dataset['URL'].str.extract(regex)

或者任何其他正则表达式,具体取决于您希望正则表达式的灵活性。

问题在于如何定义正则表达式,正则表达式的意思是“提取字符串匹配:一个字符“a”,包含1个或多个字符“n”,一个或多个字符(除行终止符外),一个字符“,”和一行末尾”。如果您仔细想想,您无法与示例中的描述相匹配,因为行尾没有逗号。您可以使用这个有用的函数尝试正则表达式,它可以很好地解释正则表达式

解决这个问题,你可以做到

regex=r'(An[a-zA-Z0-9\s]+[a-zA-Z0-9\s]+),'
dataset['Sprint']=dataset['URL'].str.extract(regex)

或者任何其他正则表达式,取决于您希望正则表达式的灵活性。

我对正则表达式不熟悉,但您以非常优雅的方式解决了这个问题。我会花点时间来学习regex,谢谢:)我对regex不熟悉,但你用一种非常优雅的方式解决了这个问题。我将花时间学习regex,谢谢:)