Python re.sub不返回匹配
在我的脑海里,有以下几点:Python re.sub不返回匹配,python,regex,Python,Regex,在我的脑海里,有以下几点: >>> re.sub('([eo])', '_\1_', 'aeiou') 应返回: 'a_e_i_o_u' 相反,它返回: 'a_\x01_i_\x01_u' 我肯定我的大脑抽筋了,但我一辈子都搞不清楚到底出了什么问题。\1以Python字符串文本生成\x01。双斜杠,或使用原始字符串文字: >>> import re >>> re.sub('([eo])', '_\1_', 'aeiou') 'a_\x0
>>> re.sub('([eo])', '_\1_', 'aeiou')
应返回:
'a_e_i_o_u'
相反,它返回:
'a_\x01_i_\x01_u'
我肯定我的大脑抽筋了,但我一辈子都搞不清楚到底出了什么问题。
\1
以Python字符串文本生成\x01
。双斜杠,或使用原始字符串文字:
>>> import re
>>> re.sub('([eo])', '_\1_', 'aeiou')
'a_\x01_i_\x01_u'
>>> re.sub('([eo])', '_\\1_', 'aeiou')
'a_e_i_o_u'
>>> re.sub('([eo])', r'_\1_', 'aeiou')
'a_e_i_o_u'
请参见Python正则表达式HOWTO:
如前所述,正则表达式使用反斜杠字符('\'
)来表示特殊形式或允许在不调用特殊含义的情况下使用特殊字符。这与Python在字符串文本中出于相同目的使用相同字符相冲突
\1
以Python字符串文本生成\x01
。双斜杠,或使用原始字符串文字:
>>> import re
>>> re.sub('([eo])', '_\1_', 'aeiou')
'a_\x01_i_\x01_u'
>>> re.sub('([eo])', '_\\1_', 'aeiou')
'a_e_i_o_u'
>>> re.sub('([eo])', r'_\1_', 'aeiou')
'a_e_i_o_u'
请参见Python正则表达式HOWTO:
如前所述,正则表达式使用反斜杠字符('\'
)来表示特殊形式或允许在不调用特殊含义的情况下使用特殊字符。这与Python在字符串文本中出于相同目的使用相同字符相冲突
使用原始字符串r:
re.sub('([eo])', r'_\1_', 'aeiou')
输出:
In [3]: re.sub('([eo])', r'_\1_', 'aeiou')
Out[3]: 'a_e_i_o_u'
In [4]: "\1"
Out[4]: '\x01'
In [5]: r"\1"
Out[5]: '\\1'
使用原始字符串r:
re.sub('([eo])', r'_\1_', 'aeiou')
输出:
In [3]: re.sub('([eo])', r'_\1_', 'aeiou')
Out[3]: 'a_e_i_o_u'
In [4]: "\1"
Out[4]: '\x01'
In [5]: r"\1"
Out[5]: '\\1'
大脑确实抽筋了。谢谢你,大脑确实抽筋了。非常感谢。