在Python正则匹配对象中,如何进行子串匹配并将结果赋值给变量?
根据这个 re.sub 和 'replace' 函数 - 感谢 Ignacio 的提示! - 我可以把我那段很长的文本中的所有匹配项替换成字符串 '* NONSENSE *',到目前为止,一切都很好!
在这个过程中,我想在匹配对象中找到一个 子字符串,我称它为 'findkey',这样我就可以对它进行进一步的处理……
我该怎么做呢?
data = re.sub('(:::[A-Z,a-z,:]+:::)', replace, data)
def replace(matchobj):
if matchobj.group(0) != '':
# this seems to work:
tag = matchobj.group(1)
# but this doesn't:
findkey = re.search(':::([A-Z,a-z]+):::', tag)
return '******************** NONSENSE ********************'
else:
return ''
2 个回答
0
0
试试这个。你可以把里面的部分当作最初的子调用的一部分来匹配。
import re
data = ":::::::::::BLAH:::::::::, ::::::::MORE:::::::"
def replace(matchobj):
# this seems to work:
tag = matchobj.group(0)
findkey = matchobj.group(1)
print findkey
return '******************** NONSENSE ********************'
data = re.sub(r':::(?P<inner>[A-Z,a-z]+):::', replace, data)
print data
返回以下内容
BLAH
MORE
::::::::******************** NONSENSE ********************::::::, :::::******************** NONSENSE ********************::::