繁体   English   中英

python-不太清楚re.sub

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM