[英]python - not quite figuring out re.sub
我想用一位数字,空格和字符替换任何包含一位数字和一个字符的表达式。
示例:“ 3f”应变为“ 3f”
我正在执行以下操作以确保我知道要替换的正则表达式是什么。
import re
found = re.match(r'^[0-9][a-z]$', '3f')
if found:
print 'ok'
结果是:
>> ok
但是,当我这样做
found = re.sub(r'^[0-9][a-z]$',r'^[0-9] [a-z]$', '3f')
我得到:
>>>> '^[0-9] [a-z]$'
而不是“ 3 f”
我究竟做错了什么?
found = re.sub(r'^([0-9])([a-z])$',r'\1 \2', '3f')
# ^^^^^ ^^^^^
# 1 2
您需要为第一个匹配指定r"\\1"
,为第二个匹配指定r"\\2"
,依此类推
您在正则表达式中指定与捕获组()
匹配
而不是专门依赖于字符串匹配,另一种可能性是直接使用函数来操作匹配的组:
found = re.sub(r'^([0-9])([a-z]$)',lambda matchobj: matchobj.group(1) + ' ' + matchobj.group(2), '3f')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.