平方X 发表于 2017-10-10 16:07:46

正则将 F1 替换为 F01



在 [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\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。


页: [1]
查看完整版本: 正则将 F1 替换为 F01