平方X

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2416|回复: 0

正则将 F1 替换为 F01

[复制链接]

414

主题

709

帖子

3657

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3657
QQ
发表于 2017-10-10 16:07:46 | 显示全部楼层 |阅读模式
[md]

在 [http://blog.pingfangx.com/2356.html](http://blog.pingfangx.com/2356.html) 中因为要排序快捷键,所以要将 F1 替换为 F01

## 要区分一位与两位
* result = re.sub(r'(\d)', r'0\1', str)
* result = re.sub(r'(\d)(\D*)', r'0\1', str)
>都不行,F10会变为F0100,因为后面的数字满足1位就满足2位。

## 前后不为数字
* result = re.sub(r'(\D)(\d)\D', r'\1[zero]\2', str)
>不可行,因为后面有可能有别的内容,也可能没有了,只能匹配"F1其他",不能匹配单独的"F1"  
>而且因为要取第1组,后面要跟0就变成10了。

## 负向零宽断言
要让后面不是数字可以
* result = re.sub(r'(\d)(?!\d)', r'0\1', str)  
但是结果为F100,因为最后一位的0满足
* result = re.sub(r'(?<!\d)(\d)(?!\d)', r'0\1', str)  
*成功*

也就是说,将单独的一个数字,补上0。

[/md]
我是平方X~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|平方X ( 冀ICP备14018164号 )

GMT+8, 2024-11-22 01:25 , Processed in 0.091877 second(s), 22 queries .

技术支持:Powered by Discuz!X3.4  © 2001-2013 Comsenz Inc.

版权所有:Copyright © 2014-2018 平方X www.pingfangx.com All rights reserved.

快速回复 返回顶部 返回列表