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 演示。
当然可以,你可以匹配到双引号开头,然后匹配捕获除双引号以外的所有字符:
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。使用 .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
我正在研究 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 演示。
当然可以,你可以匹配到双引号开头,然后匹配捕获除双引号以外的所有字符:
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。使用 .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