Python 中的命名反向引用 (?P=name) 问题

2023-12-01

我在学习 're' Python 的一部分,以及命名模式(?P=name)使我困惑,

当我使用re.sub()为了对数字和字符进行一些交换,模式 '(?P=name)' 不起作用,但模式 '\N' and '\g<name>’还是有道理的。代码如下:

[IN]print(re.sub(r'(?P<digit>\d{3})-(?P<char>\w{4})', r'(?P=char)-(?P=digit)', '123-abcd'))
[OUT] (?P=char)-(?P=digit)
[IN] print(re.sub(r'(?P<digit>\d{3})-(?P<char>\w{4})', r'\2-\1', '123-abcd'))
[OUT] abcd-123
[IN] print(re.sub(r'(?P<digit>\d{3})-(?P<char>\w{4})', r'\g<char>-\g<digit>', '123-abcd'))
[OUT] abcd-123

为什么我使用时无法替代(?P=name)?
以及如何正确使用呢?
我正在使用Python 3.5


The (?P=name) is an 内联(模式内)反向引用。您可以在正则表达式模式中使用它来匹配相应命名捕获组捕获的相同内容,请参阅Python 正则表达式语法参考:

(?P=name)
对命名组的反向引用;它匹配先前名为 name 的组所匹配的任何文本。

See 这个演示: (?P<digit>\d{3})-(?P<char>\w{4})&(?P=char)-(?P=digit)火柴123-abcd&abcd-123因为“数字”组匹配并捕获123,“char”组捕获abcd然后命名的内联反向引用匹配abcd and 123.

要替换匹配项,请使用\1, \g<1> or \g<char>语法与re.sub替换模式。不使用(?P=name)为了这个目的:

repl可以是字符串或函数...反向引用,例如\6, 被替换为模式中第 6 组匹配的子字符串...

在字符串类型 repl 参数中,除了上述字符转义和反向引用之外,\g<name>将使用与名为 name 的组匹配的子字符串,如(?P<name>...) syntax. \g<number>使用相应的组号;\g<2>因此相当于\2,但在替换中并不含糊,例如\g<2>0. \20将被解释为对组 20 的引用,而不是对组 2 后跟文字字符“0”的引用。反向引用\g<0>替换 RE 匹配的整个子字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的命名反向引用 (?P=name) 问题 的相关文章

  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • 如何搜索一列并用找到的内容填充另一列?

    我有一个带有虚构人物数据的大熊猫数据框 下面是一个小例子 每个人都由一个数字定义 import pandas as pd import numpy as np df pd DataFrame Number 5569 3385 9832 64
  • 使用 Poetry 创建的 Python 项目:如何在 Visual Studio Code 中调试它?

    我有一个根据基本 Poetry 创建的 Python 项目指示 https python poetry org docs basic usage 项目文件夹是这样的 my project my project my project py F
  • python win32com.client 调整窗口大小

    我正在使用 Python 3 4 1 通过 win32com client 控制 Windows 应用程序 我可以激活它 我可以发送击键 点击等 现在我想知道是否有办法调整窗口大小并将其设置到特定位置 我找不到方法 这里有一些代码片段 所以
  • matplotlib - 将文本包装在图例中

    我目前正在尝试绘制一些pandas数据通过matplotlib seaborn 然而我的一个专栏标题特别长 拉长了情节 考虑以下示例 import random import pandas as pd import matplotlib p
  • pandas DataFrame 中行的高效成对比较

    我目前正在处理一个较小的数据集 大约 900 万行 不幸的是 大多数条目都是字符串 即使强制类别 框架在内存中也只有几 GB 我想做的是将每一行与其他行进行比较 并对内容进行直接比较 例如 给定 A B C D 0 cat blue old
  • Python正则表达式替换引号中的文本(引号本身除外)

    例如 我有一个测试字符串 content I opened my mouth Good morning I said cheerfully 我想使用正则表达式删除双语音标记之间的文本 但不删除语音标记本身 所以它会返回 I opened m
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • PySpark DataFrame 上分组数据的 Pandas 式转换

    如果我们有一个由一列类别和一列值组成的 Pandas 数据框 我们可以通过执行以下操作来删除每个类别中的平均值 df DemeanedValues df groupby Category Values transform lambda g
  • 如何读取多个文件并将它们合并到一个 pandas 数据框中?

    我想读取位于同一目录中的多个文件 然后将它们合并到一个 pandas 数据框中 如果我这样做的话它会起作用 import pandas as pd df1 pd read csv data 12015 csv df2 pd read csv
  • 根据标签位置计算 Pandas DataFrame 的索引

    我正在尝试计算标签的索引Pandas https pandas pydata org DataFrame在每一列中 基本上我有以下内容DataFrame d col1 label1 label2 label3 col2 label2 lab
  • model.predict() 返回类而不是概率

    Hello 我是第一次使用 Keras 我训练并保存了一个模型 作为 json 文件及其权重 该模型旨在将图像分为 3 个类别 我的编译方法 model compile loss categorical crossentropy optim
  • 将整数转换为特定格式的十六进制字符串

    我是 python 新手 有以下问题 我需要将整数转换为 6 个字节的十六进制字符串 例如 281473900746245 gt xFF xFF xBF xDE x16 x05 十六进制字符串的格式很重要 int 值的长度是可变的 格式 0
  • 为什么我的 Python 散点图不起作用?

    我使用 pylab 创建了一个非常简单的散点图 pylab scatter engineSize fuelMile pylab show 该程序的其余部分不值得发布 因为正是该行给我带来了问题 当我将 散点 更改为 绘图 时 它会绘制数据图
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • 如何将另一整列作为参数传递给 pandas fillna()

    我想用另一列中的值填充一列中的缺失值 使用fillna方法 我读到循环遍历每一行将是非常糟糕的做法 最好一次完成所有事情 但我不知道如何使用fillna 之前的数据 Day Cat1 Cat2 1 cat mouse 2 dog eleph
  • 正则表达式:如果字符串包含空格则不匹配

    仅当字符串不包含空格时 我似乎无法找出匹配字符串的正则表达式模式 例如 this has whitespace match some pattern 应该返回nil but nowhitespace match some pattern 应
  • 在 Google 表格中批量查找并替换正则表达式

    是否有函数 脚本或插件可以将大量正则表达式替换应用于 Google 表格中的一系列数据 我有一张包含地址列表的工作表 另一张工作表在两列中包含几十对正则表达式 例如 St 和 Street 我想替换地址中第一列短语的所有实例列出另一个中相应
  • nltk 标记化和缩写

    我用 nltk 对文本进行标记 只是将句子输入到 wordpunct tokenizer 中 这会拆分缩写 例如 don t 到 don t 但我想将它们保留为一个单词 我正在改进我的方法 以实现更精确的文本标记化 因此我需要更深入地研究

随机推荐

  • 在php上写入文件

    我想保留访问者的 IP 并将其保存在文件中 我尝试了 fwrite 函数 但我认为它是在文件上的先前 ip 上重写的 Example ip txt 为空 当我运行 write php 脚本时 在 ip txt 上我有 x x x x ip
  • 将 StackPanel.Visibility 绑定到其子级的 Visibility 属性

    我对数据绑定比较陌生 只是在阅读它 我想做的是 我有一个带有许多子控件的 StackPanel
  • 从模板函数返回 double 或complex

    我正在编写一些函数模板来重载 矩阵类的运算符 我对类型矩阵做了很多工作double and complex
  • 如何在 RStudio 中查看、打开和保存 .rdb 文件

    我可以按照指示将变量环境中 rdb 文件中的每个数据库视为 承诺 here 现在 我想编辑其中一个文件并保存它 我怎样才能做到这一点 我是 R 新手 在一次讨论中r pkg 开发 Ivan Krylov 提供了以下读取 RDB 数据库的函数
  • Powershell 将用户添加到组

    我正在尝试读取包含用户信息的 XML 文件 并根据该信息将用户添加到 Active Directory 组 到目前为止 我一直在查找错误消息 但没有任何帮助 这是将用户添加到组的代码 MyUsers xml Get Content e sa
  • 没有“static”或“extern”的“inline”在 C99 中有用吗?

    当我尝试构建这段代码时 inline void f int main f 使用命令行 gcc std c99 o a a c 我收到链接器错误 未定义的引用f 如果我使用 错误就会消失static inline or extern inli
  • 解决BaseGameActivity

    我试图追随的人一样多本教程没有成功 简单的错误是 The import com google example games basegameutils BaseGameActivity cannot be resolved BaseGameU
  • 如何制作 boost::filesystem::directory_iterator 的副本?

    我知道这听起来很愚蠢 但是看看这个简单的例子 工作目录应该有多个项目 define BOOST FILESYSTEM VERSION 3 include
  • 在 Scrapy 蜘蛛中动态添加 allowed_domains

    我有一个蜘蛛 它以一小部分列表开头allowed domains在蜘蛛爬行的开始 当蜘蛛抓取从解析器内继续时 我需要动态地将更多域添加到此白名单中 但由于后续请求仍在过滤中 因此以下代码段无法完成此操作 还有更新的吗allowed doma
  • 如何从引用网址获取 location.hashtag - Google Analytics

    有一个网站在其网址中使用页面按钮和主题标签 来操纵其内容 链接 的排序方式 他们链接到我的网站 我想知道人们在最终找到我的网站并点击之前点击了哪些按钮 例如 引用网址如下所示 http www example com page1 conte
  • 使用 JQuery 查找并计算选中框的数量

    我在一页上有一个表单 在该表单中 表中的每一行都有一个复选框 我需要计算已选中行的行数 但我什至从 jQuery 中选择它都遇到了麻烦 这是我的复选框代码的样子
  • 红黑高斯赛德尔和 OpenMP

    我试图证明 OpenMP 与 MPICH 相比的一点 并且我编写了以下示例来演示在 OpenMP 中实现高性能是多么容易 Gauss Seidel 迭代被分成两个单独的运行 以便在每次扫描中每个操作都可以按任何顺序执行 并且每个任务之间不应
  • ProxyPass 和 ProxyPassReverse 可以在 htaccess 中工作吗?

    我以前从未设置过代理 我使用的是共享托管 因此要设置 Apache 指令 我需要使用 htaccess 我可以使用 htaccess 执行如下操作吗 有什么限制吗 ProxyRequests Off ProxyPass img http i
  • 从 PHP 获取 CSS 样式

    我正在使用简单 DOM 解析器解析页面 它很简洁 但我想为每个元素获取应用的 css 样式 不仅是内联样式 还包括应用于该元素的每种样式 无论是内联样式 页内样式还是外部样式 有没有一个类可以做到这一点 如果没有 你会怎么做 我并不真正关心
  • 使用 .htaccess 重写查询字符串中的变量

    我在网站中使用 PHP 脚本 该脚本在 URL 中生成查询字符串 查询字符串中的变量之一是 colour red 我想在我的 htaccess 文件中制定一条规则 重写所有实例colour red to colour blue 我无权更改原
  • JQuery:返回上一页时如何返回到完全相同的滚动位置

    我有一个很长的项目列表 当我单击每个项目并返回主列表时 滚动位置丢失了 如何使用 jQuery 返回到相同的精确滚动位置 有什么简单的方法可以做到吗 document ready function update button click f
  • 包含 QML 中的对象的 QAbstractListModel 有哪些缺点?

    Qt 提供了将 C 模型与 QML 相结合的可能性并在文档中建议了三种方法 QStringList QObjectList QAbstractItemModel 前两者使用起来非常简单 例如QObjectList in C QList
  • 获取每天创建的条目数

    假设我有一个这样的搜索查询 SELECT COUNT id date created at FROM entries WHERE date created at gt date current date interval 1 week GR
  • 使用 WebView android 读取 Gif 图像

    当我尝试使用 Android 2 3 3 API 10 中的 WebView 读取 gif 图像时 它不是动画的 它显示为静态的 我该如何解决这个问题 有什么我必须更改的设置吗 Activity Main xml
  • Python 中的命名反向引用 (?P=name) 问题

    我在学习 re Python 的一部分 以及命名模式 P name 使我困惑 当我使用re sub 为了对数字和字符进行一些交换 模式 P name 不起作用 但模式 N and g