Python 中的正则表达式 - 具有单个 "re.sub" 调用的子字符串

Regex in Python - Substring with single "re.sub" call

我正在研究 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 的建议,我们都非常感谢。

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

这应该用于 you.See 演示。

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

当然可以,你可以匹配到双引号开头,然后匹配捕获除双引号以外的所有字符:

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))

IDEONE demo

<place of birth="作为字面量匹配,([^"]*)是匹配0个或多个除"以外的字符的捕获组1。使用 .group(1).

访问该值

这里是REGEX demo.

是否有特定原因导致您删除字符串的其余部分,而不是选择您想要的部分,例如

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

此代码在 python 3.6

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


 Stockholm