具有重复组的正则表达式

2024-01-29

我一直在尝试匹配连字符之间的短语。我意识到我可以轻松地拆分连字符并取出短语,但我的等效正则表达式无法按预期工作,我想了解原因:

([^-,]+(?:(?: - )|$))+

[^-,]+只是我对短语的定义

(?: - )只是非捕获空格分隔的连字符

so (?:(?: - )|$)正在捕获连字符或行尾

最后,整个内容用括号括起来+量词匹配多个。

如果我表演我会得到什么regex.match("A - B - C").groups() is ('C',)

我也尝试过更简单的正则表达式([^,-]+)+具有相似的结果

我在用着re.match因为我想用pandas.Series.str.extract将其应用于一个很长的列表。

重申一下:我现在正在使用一个简单的split在连字符上,但为什么这个正则表达式不返回多个组?

Thanks


正则表达式捕获组根据其在表达式中的出现进行静态“命名”。每个捕获组都有自己的编号,并且无论单个组捕获某物的频率如何,都会将匹配项分配给该组。

如果一个小组之前捕获了某些内容,然后又再次捕获了某些内容,则后面的结果将覆盖之前捕获的内容。无法使用正常匹配来收集组的所有捕获值。

如果要查找多个值,则只需匹配单个组并对字符串的其余部分重复匹配。这通常是由re.findall or re.finditer:

>>> re.findall('\s*([^-,]+?)\s*', 'A - B - C')
['A', 'B', 'C']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有重复组的正则表达式 的相关文章

随机推荐

  • FormArray的使用和动态添加控件行

    我在尝试使用 Angular 2 和 Forms 做某事时遇到了麻烦 假设我有一个邀请列表 其中有两个字段 分别用于姓名和电子邮件 以及一个用于添加更多行的按钮 姓名 电子邮件 姓名 电子邮件 添加行 我有点知道您可以使用 FormArra
  • 如何获取

    我有一个FlowPanel 其高度是固定的 实际上是其父级高度的百分比 该高度是固定的 在此面板中 我添加了几个div元素 使用 CSS 我将其高度设置为其父级的 100 我想要做的是使用 javascript 将其宽度设置为等于其高度 我
  • 使用最新的 Android L 支持 v4 进行 Android 活动转换

    我正在为我的应用程序实现材料设计 我发现可以在此处进行活动之间的转换 http android developers blogspot com es 2014 10 implementing material design in your
  • Jquery 错误:需要对象

    这是我在 aspx 页面中的代码
  • android - 如何使文本视图滚动?

    实际上 我在文本视图中显示了一些数据 但它的一半数据超出了屏幕 所以我需要帮助来使文本视图滚动或任何其他可以向下滚动屏幕的东西 任何帮助 将不胜感激 将 TextView 放入 XML 中的 ScrollView 中 如下所示
  • Maven + Cucumber-jvm - 如何根据环境运行不同的功能子集

    我正在努力实现这一目标 我想配置一个 Maven 项目 以便它根据所选配置文件运行不同的 Cucumber 功能子集 dev pro 例如 我有几个功能文件来测试网络导航 使用标签来指定环境 PRO pro Feature Nav Pro
  • 如何使用 gdb“观察”C++ 动态数组?

    考虑以下示例 int size 10 kk new int size for int i 0 i lt size i kk i i delete kk 如何为整个阵列添加监视 我可以一一添加手表 kk 0 kk 1 但既然我知道数组的长度
  • kubectl exec 到多容器 pod 的容器中

    我在登录多容器 Pod 的一个容器时遇到问题 我从以下位置获取容器 IDkubectl describe pod
  • Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

    As per 本文 http symfony com doc current cookbook form create custom field type html在 Symfony 文档上 我创建了一个自定义字段类型 将其设置为servi
  • 视图框架在 viewWillAppear: 和 viewDidAppear: 之间变化

    我在我的应用程序中发现了一个奇怪的行为 其中连接IBOutlet在我的视图控制器中的调用之间有其连接的视图框架viewWillAppear and viewDidAppear 这是我的相关代码UIViewController子类 void
  • 如何使用PHP连接sql server

    我想使用PHP连接到sql server数据库 我安装了 xampp 1 7 0 php 5 2 和 SQLSRV20 我已将扩展添加到php ini我收到此错误 Warning mssql connect function mssql c
  • 如何在 vim 中使用 ctags 自动完成

    我尝试在vim中开发android项目 但是发现在ctags中查找一种方法有点无聊 有没有办法使用ctags在vim中显示自动完成列表 thanks 这是我的 ctags 版本如下 Exuberant Ctags 5 8 Copyright
  • 如何在 WireMock 中成功代理 HTTPS 端点?

    我正在编写一个内部使用 WireMock 的 HTTP 记录播放代理 并且在记录 HTTPS 目标时遇到问题 HTTP 站点工作正常 以下是我为未加密站点设置 WireMock 代理的方法 java jar var proximate wi
  • 了解每个线程的 cuda 堆内存限制

    这个问题是关于cuda中堆大小限制的 访问了有关该主题的一些问题 包括这个 内核中的新运算符 奇怪的行为 https stackoverflow com questions 13072624 new operator in kernel s
  • 将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题

    我已将 Springs jsp 安全标记库添加到 freemarker 模板中 因为我使用 freemarker 而不是 jsps 来查看我的 Web 应用程序 对于任何寻找如何设置它的人 我发现添加 spring 库以使用 JSP Tag
  • 多层感知器 - 寻找“分离”曲线

    使用单层感知器 很容易找到 分隔线 我不知道专业术语 的方程 即根据感知器的权重在训练后将两种类型的点分开的线 在多层感知器中 如何以类似的方式找到分隔两种类型点的曲线 不是直线 方程 thanks 这只是尝试获得分离边界或曲线的近似值 D
  • React Native:通过本机模块获取设备名称,无需回调

    我想使用本机模块而不使用外部库来获取 iOS 设备名称 根据 React Native 的文档 React Native 桥是异步的 因此将结果传递给 JavaScript 的唯一方法是使用回调或发出事件 然而 文档还解释说 您可以将常量导
  • 在c#中使用oledb获取Excel数据范围

    我想通过使用 oledb 获取 Excel 工作表使用的数据范围 代码如下 String strExcelConn Provider Microsoft Jet OLEDB 4 0 Data Source E DOTNET CrsMicro
  • 外部车把模板骨干木偶

    在我的应用程序中 我添加了 Marionette sync 插件并覆盖这些方法 Backbone Marionette TemplateCache prototype loadTemplate function templateId cal
  • 具有重复组的正则表达式

    我一直在尝试匹配连字符之间的短语 我意识到我可以轻松地拆分连字符并取出短语 但我的等效正则表达式无法按预期工作 我想了解原因 只是我对短语的定义 只是非捕获空格分隔的连字符 so 正在捕获连字符或行尾 最后 整个内容用括号括起来 量词匹配多