为什么re.sub替换整个模式,而不仅仅是其中的一个捕获组?

尼克:

re.sub('a(b)','d','abc')收益率dc,没有adc

为什么要re.sub替换整个捕获组,而不仅仅是捕获组“(b)”?

yeputons:

因为应该替换整个模式:

返回通过用替换repl替换字符串中模式中最左边的非重叠出现而获得的字符串。

如果仅替换某些子组,则具有多个组的复杂正则表达式将不起作用。有几种可能的解决方案:

  1. 完整指定模式:re.sub('ab', 'ad', 'abc')-我的最爱,因为它非常易读和明确。
  2. 捕获保留的组,然后在模式中引用它们(请注意,它应该是原始字符串,以避免转义):re.sub('(a)b', r'\1d', 'abc')
  3. 与以前的选项类似:提供一个回调函数作为repl参数,并使其处理该Match对象并返回所需的结果。
  4. 使用lookbehinds / lookaheds,它们不包含在匹配项中,但会影响匹配:re.sub('(?<=a)b', r'd', 'abxb')yields adxb?<=在该组的开头说:“这是一个超前”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我要使用枚举,而不仅仅是一个类?

为什么 Iterator::next 返回一个 Option 而不仅仅是一个项目?

为什么这个 case 语句需要一个“if else”而不仅仅是一个“if”?

为什么整个列的值在每次迭代后都会改变,而不仅仅是一个特定的单元格?

为什么mapStateToProps和mapDispatchToProps不仅仅是Redux中的一个函数?

为什么我最后得到一个带有.vhost的进程的名称,而不仅仅是名称?

为什么我整个div都是可点击的,而不仅仅是链接?

为什么要注入整个 DbContext 而不仅仅是必要的 DbSet?

为什么+ =添加和INT。一个列表的另一个并不仅仅是+?

为什么我在调用 vDataFrame.count 时看到的是一个表格,而不仅仅是平均值

Php:为什么我的代码会回显表中的所有值,而不仅仅是这些值的一个子集?

为什么Finatra为什么使用flatMap而不仅仅是地图?

为什么这个 SUM 是所有分数,而不仅仅是最好的 5 分?

为什么要实现 Comparator<t> 而不仅仅是 Comparator

为什么需要使用 new Random() 而不仅仅是 Random Randomnum?

为什么需要使用Flask扩展,而不仅仅是裸库?

为什么这样做:(A || B)而不仅仅是:A || B?

为什么我应该监视流程,而不仅仅是链接和陷阱出口?

为什么要使用延迟变量/计算属性,而不仅仅是方法

为什么是xmlns:xsi,而不仅仅是XML文档中的xsi?

为什么除了GOT之外还存在PLT,而不仅仅是使用GOT?

为什么要使用react-redux而不仅仅是redux?

为什么获取会返回“ TypeError:无法获取”,而不仅仅是“无法获取”?

为什么要更改所有服务,而不仅仅是if条件服务?

反应本机| 为什么我的函数立即运行,而不仅仅是onPress?

Flink,为什么 CoMap 返回“DataStream with Product with Serializable”而不仅仅是 DataStream?

为什么多个 fget 需要的不仅仅是 sizeof(type)

为什么需要使用 const A& 而不仅仅是 A&?

什么时候应该创建不同的VPC,而不仅仅是不同的子网?