|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有时候你可能不满足简单的字符串替换,你可能需要在替换的过程中动点“手脚”......没关系,一样可以满足你!replacement 参数还可以是一个函数,该函数将会在正则表达式模式每次不重复匹配的时候被调用。在每次调用时,函数会收到一个匹配对象的参数,因此你就可以利用这个对象去计算出新的字符串并返回它。
下边的例子中,替换函数将十进制数替换为十六进制数:
- >>> def hexrepl(match):
- ... "Return the hex string for a decimal number"
- ... value = int(match.group())
- ... return hex(value)
- ...
- >>> p = re.compile(r'\d+')
- >>> p.sub(hexrepl, 'Call 65490 for printing, 49152 for user code.')
- 'Call 0xffd2 for printing, 0xc000 for user code.'
复制代码
当使用模块级的 re.sub() 函数时,正则表达式模式作为第一个参数。该模式可以是一个字符串或一个编译好的对象。如果你需要指定正则表达式标志,那么你必须使用后者;或者使用模式内嵌修正器,例如 sub("(?i)b+", "x", "bbbb BBBB") 返回 'x x'。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我想问的是上面的代码是怎么实现十进制转化成十六进制的,可不可以说明一下步骤?
还有模式内嵌修正器的那个例子是怎么实现返回 'x x' 的? |
|