Python中的正则表达式 - 使用单个“re.sub”调用的子串

时间:2015-09-28 08:16:18

标签: python regex substring

我正在研究Python中的Regex函数。 作为其中的一部分,我试图从字符串中提取子字符串。

例如,假设我有字符串:

<place of birth="Stockholm">

有没有办法通过单一正则表达式调用来提取斯德哥尔摩?

到目前为止,我有:

location_info = "<place of birth="Stockholm">"

#Remove before
location_name1 = re.sub(r"<place of birth=\"", r"", location_info)
#location_name1 --> Stockholm">

#Remove after
location_name2 = re.sub(r"\">", r"", location_name1)
#location_name2 --> Stockholm

有关如何在不使用两个“re.sub”调用的情况下提取字符串Stockholm的任何建议,我们非常感谢。

4 个答案:

答案 0 :(得分:3)

当然,您可以将开头与双引号相匹配,然后匹配并捕获除双引号之外的所有字符:

%

请参阅IDEONE demo

0 % 3 = 0 1 % 3 = 1 2 % 3 = 2 3 % 3 = 0 4 % 3 = 1 5 % 3 = 2 6 % 3 = 0 7 % 3 = 1 ... 与文字相匹配,而import re p = re.compile(r'<place of birth="([^"]*)') location_info = "<place of birth=\"Stockholm\">" match = p.search(location_info) if match: print(match.group(1)) 是与<place of birth="以外的0个或多个字符匹配的捕获组1。使用([^"]*)访问该值。

这是REGEX demo

答案 1 :(得分:1)

print re.sub(r'^[^"]*"|"[^"]*$',"",location_info)

这应该为你做。参见演示。

https://regex101.com/r/vV1wW6/30#python

答案 2 :(得分:0)

是否有一个特定的原因,你要删除其余的字符串,而不是选择你想要的部分

location_info = "<place of birth="Stockholm">"
location_info = re.search('<.*="(.*)".*>', location_info, re.IGNORECASE).group(1)

答案 3 :(得分:0)

此代码在python 3.6

下测试
 test =  '<place of birth="Stockholm">'
 resp = re.sub(r'.*="(\w+)">',r'\1',test)
 print (resp)


 Stockholm
相关问题