热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Python2.7中使用带有IGNORECASE的re.sub?-HowcanIusere.subwithIGNORECASEinPython2.7?

Iwanttomodifyastringwiththehelpofre.sub:我想在re.sub的帮助下修改一个字符串:>>>re.sub(spart

I want to modify a string with the help of re.sub:

我想在re.sub的帮助下修改一个字符串:

>>> re.sub("sparta", r"\1", "Here is Sparta.", flags=re.IGNORECASE)

I expect to get:

我希望得到:

'Here is Sparta.'

But I get an error instead:

但我得到一个错误:

>>> re.sub("sparta", r"\1", "Here is Sparta.", flags=re.IGNORECASE)
Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/lib/python2.7/re.py", line 155, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "/usr/lib/python2.7/re.py", line 291, in filter
    return sre_parse.expand_template(template, match)
  File "/usr/lib/python2.7/sre_parse.py", line 833, in expand_template
    raise error, "invalid group reference"
sre_constants.error: invalid group reference

How should I use re.sub to get the correct result?

我该如何使用re.sub来获得正确的结果?

2 个解决方案

#1


2  

You do not specify any capturing group in the pattern and use a backreference to Group 1 in the replacement pattern. That causes an issue.

您不在模式中指定任何捕获组,并在替换模式中对组1使用反向引用。这导致了一个问题。

Either define a capturing group in the pattern and use the appropriate backreference in the replacement pattern, or use the \g<0> backreference to the whole match:

在模式中定义捕获组并在替换模式中使用适当的反向引用,或使用\ g <0>反向引用整个匹配:

re.sub("sparta", r"\g<0>", "Here is Sparta.", flags=re.IGNORECASE)

See the Python demo.

请参阅Python演示。

#2


0  

When you use \x in your second string (replacement string I think it's called) where x is a number, python is going to replace it with the group x.

当您在第二个字符串中使用\ x(替换字符串,我认为它被称为),其中x是一个数字,python将用组x替换它。

You can define a group in your regex by wrapping it with parentheses, like so:

您可以通过用括号括起来在正则表达式中定义一个组,如下所示:

re.sub(r"capture (['me]{2})", r'group 1: \1', 'capture me!') # => group 1: me
re.sub(r"capture (['me]{2})", r'group 1: \1', "capture 'em!") # => group 1: 'em

Nested captures? I've lost the count!

嵌套捕获?我输掉了数!

It's the opening bracket that defines it's number:

它是定义它的数字的开始括号:

(this is the first group (this is the second) (this is the third))

Named group

Named group are pretty useful when you use the match object that returns re.match or re.search for example (refer to the docs for more), but also when you use complex regex, because they bring clarity.

当您使用返回re.match或re.search的匹配对象时,命名组非常有用(请参阅文档了解更多信息),以及使用复杂正则表达式时,因为它们带来了清晰度。

You can name a group with the following syntax:

您可以使用以下语法命名组:

(?Pyour pattern)

So, for example:

所以,例如:

re.sub("(?Phello(?P[test]+)) (?P[a-z])", "first: \g") # => first: hello

What is the group 0

The group 0 is the entire match. But, you can't use \0, because it's going to print out \x00 (the actual value of this escaped code). The solution is to use the named group syntax (because regular group are kind of named group: they're name is just an integer): \g<0>. So, for example:

组0是整场比赛。但是,您不能使用\ 0,因为它将打印出\ x00(此转义代码的实际值)。解决方案是使用命名的组语法(因为常规组是一种命名组:它们的名称只是一个整数):\ g <0>。所以,例如:

re.sub(r'[hello]+', r'\g<0>', 'lehleo') # => lehleo

For your problem

This answer is just suppose to explain capturing, not really answering your question, since @Wiktor Stribiżew's one is perfect.

这个答案只是假设解释捕获,而不是真正回答你的问题,因为@WiktorStribiżew的一个是完美的。


推荐阅读
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文探讨了在Django项目中,如何在对象详情页面添加前后导航链接,以提升用户体验。文章详细描述了遇到的问题及解决方案。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
author-avatar
daadhkiw_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有