鱼C论坛

 找回密码
 立即注册
查看: 2218|回复: 2

正则表达式

[复制链接]
发表于 2020-2-27 19:55:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有时候你可能不满足简单的字符串替换,你可能需要在替换的过程中动点“手脚”......没关系,一样可以满足你!replacement 参数还可以是一个函数,该函数将会在正则表达式模式每次不重复匹配的时候被调用。在每次调用时,函数会收到一个匹配对象的参数,因此你就可以利用这个对象去计算出新的字符串并返回它。

下边的例子中,替换函数将十进制数替换为十六进制数:

  1. >>> def hexrepl(match):
  2. ...     "Return the hex string for a decimal number"
  3. ...     value = int(match.group())
  4. ...     return hex(value)
  5. ...
  6. >>> p = re.compile(r'\d+')
  7. >>> p.sub(hexrepl, 'Call 65490 for printing, 49152 for user code.')
  8. 'Call 0xffd2 for printing, 0xc000 for user code.'
复制代码


当使用模块级的 re.sub() 函数时,正则表达式模式作为第一个参数。该模式可以是一个字符串或一个编译好的对象。如果你需要指定正则表达式标志,那么你必须使用后者;或者使用模式内嵌修正器,例如 sub("(?i)b+", "x", "bbbb BBBB") 返回 'x x'。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我想问的是上面的代码是怎么实现十进制转化成十六进制的,可不可以说明一下步骤?
还有模式内嵌修正器的那个例子是怎么实现返回 'x x' 的?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-27 20:00:24 | 显示全部楼层
上面是小甲鱼扩展阅读中正则表达式3的内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 20:42:50 | 显示全部楼层
hex()就是转十六进制的函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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