问题标签 [capture-group]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1315 浏览

java - 非捕获组是多余的吗?

可选的非捕获组是多余的吗?

是以下正则表达式:

语义上等同于以下正则表达式?

0 投票
3 回答
2036 浏览

c# - C#中的正则表达式如何仅替换捕获组而不是非捕获组

我正在使用 C# 在 Visual Studios 2013 Express 中编写正则表达式。我试图在每个包含单词和 !@#$%^&*()_- 的字符串周围加上单引号,除了:

  • 或者
  • 不是
  • 空的()
  • 不是空的()
  • 当前的日期()
  • 任何已经有单引号的字符串。

这是我的正则表达式和它的作用示例: https ://regex101.com/r/nI1qP0/1

我只想在捕获组周围加上单引号,而不触及非捕获组。我知道这可以通过环视来完成,但我不知道如何。

0 投票
1 回答
559 浏览

python - python 正则表达式多个可选捕获组

我试图用忽略案例捕获多个组,并且暂时没有任何进展。我正在检查的字符串可以有多种形式,例如一些

所以一般来说规则是这样的:

  • 标题标签中的主标题可以包含每个字符,包括数字和特殊字符

  • 该 url 是标准 url,但可以使用 (.*) 表达式捕获而不会出现问题

  • Ch。一般是可选的

  • 如果字符串包含 Vol.,则 Ch. 强制执行

我当前的正则表达式如下所示:

我想尝试捕捉:

  • 带有 Vol 和 Ch 的标题标签,包括它们后面的数字

  • 没有 Vol 和 Ch 的标题(并且没有 Vol 和 Ch 后面的数字)

  • Ch后面的数字。

拆分正则表达式会更好,什么对性能更好(它运行了几千个字符串,所以我想保持它的性能)?

亲切的问候 Baumchen

0 投票
2 回答
79 浏览

regex - Perl 在多个绑定运算符中捕获变量

有没有办法在绑定表达式中使用捕获组并捕获所有组?

这仅捕获最后三个组:$1$2$3

按照 Avinash Raj 的建议编辑预期输出:

0 投票
1 回答
768 浏览

java - JAVA中带有反向引用的递归组捕获正则表达式

我正在尝试使用对正则表达式中组的反向引用以递归方式在字符串中捕获多个组。即使我使用的是 Pattern 和 Matcher 以及“while(matcher.find())”循环,它仍然只捕获最后一个实例而不是所有实例。在我的例子中,唯一可能的标签是 <sm>,<po>,<pof>,<pos>,<poi>,<pol>,<poif>,<poil>。由于这些是格式化标签,我需要捕获:

  1. 标签之外的任何文本(这样我就可以将其格式化为“普通”文本,我将通过在一组中的标签之前捕获任何文本来解决此问题,同时我在另一组中捕获标签本身,并且当我迭代时我删除了从原始字符串中捕获的所有内容;如果最后剩下任何文本,我将其格式化为“普通”文本)
  2. 标签的“名称”,以便我知道如何格式化标签内的文本
  3. 标签的文本内容将根据标签名称及其相关规则进行格式化

这是我的示例代码:

System.out.println 在我的控制台中只输出一次,结果如下:

第 3 组将被忽略,唯一有用的组是 1、2 和 4(第​​ 3 组是第 2 组的一部分)。为什么只捕获最后一个标签实例“poil”,而不捕获前面的“pof”、“poi”和“po”标签?

我想看到的输出是这样的:

0 投票
1 回答
85 浏览

python - 尝试在 Python 中使用从正则表达式 `(\d)?` 获得的 `\1` 时出错

示例代码:

第二条print语句给了我一个错误:

如何使用可能的量词处理这个捕获变量0而不会出错?

注意 (\d)?这里可能是另一个复杂的正则表达式,而不仅仅是一个简单的 as \d,这就是为什么我把我的量词?拿出来的原因(..)

0 投票
3 回答
1260 浏览

python - Python 正则表达式可选捕获组或 lastindex

我正在使用 python 逐行搜索文件的部分和子部分。

部分以 0-2 个空格开头,后跟三个星号,子部分有 2+ 个空格,然后是星号。

我写出没有“***”的部分/子部分;目前(使用 re.sub)。

问题 1:是否有一个带有捕获组的 python 正则表达式可以让我将部分/子部分名称作为捕获组访问?

问题 2:正则表达式组如何允许我标识部分或子部分(可能基于 match.group 中 /content 的数量)?

示例(非工作):

以前的尝试 我已经能够使用单独的正则表达式和 if 语句来捕获部分或子部分,但我想一次完成所有操作。类似于下面的行;对第二组的贪婪有问题。

我似乎无法让贪婪或可选组一起工作。 http://pythex.org/在这一点上非常有帮助。

另外,我尝试捕获星号“(* {3})”,然后根据找到的组数确定是部分还是子部分。

谢谢 也许我完全错了。任何帮助表示赞赏。

最新更新 我一直在玩 Pythex、答案和其他研究。我现在花更多的时间来捕捉这些词:

并计算星号匹配的数量以确定“级别”。我仍在寻找一个单一的正则表达式来匹配两个 - 三个“组”。可能不存在。

谢谢。

0 投票
2 回答
158 浏览

javascript - 尝试更新 vimeo 正则表达式以从 URL 获取 ID,其中包括“channels/staffpicks”

我有一个 vimeo 正则表达式,可用于从标准 URL 获取 ID:https://vimeo.com/42100325

当 URL 为:https://vimeo.com/channels/staffpicks/142100325

这就是我目前所拥有的:

0 投票
3 回答
1285 浏览

python - Python正则表达式为最后一个匹配的字符返回额外的捕获组

我正在尝试创建一个正则表达式,它将接受字符串并将它们分成三组:(1)字符串开头的特定单词列表中的任何一个。(2) 字符串末尾的特定单词列表中的任何一个。(3) 这两个匹配项之间的所有字母/空格。

例如,我将使用以下两个字符串:

我希望将字符串分解为捕获组,以便匹配对象m.groups()分别为每个字符串返回以下内容:

最初,我想出了以下正则表达式:

但是,这会返回:

所以它只给了我在中间组中匹配的最后一个字符。我了解到这不起作用,因为捕获组只会返回匹配的最后一次迭代。所以我在中间捕获组周围加上括号,如下所示:

但是现在,虽然它至少捕获了中间组,但它还在 中返回了一个额外的“e”字符m.groups(),即:

...虽然我觉得这与回溯有关,但我无法弄清楚为什么会这样。有人可以向我解释为什么我会得到这个结果,以及我怎样才能得到想要的结果?

0 投票
2 回答
566 浏览

java - 正则表达式捕获文本之间的重复组数量未知

我正在尝试在第二级下的以下文本中解析“餐饮:”后面的数字。所以应该返回'666'。

如果我使用类似的东西,(?:\bDining:\s)(.*\b)它会捕获 MAIN 下的第一次出现。因此,我试图SECOND LEVEL在正则表达式中指定,然后是重复模式:新行、多个空格,然后Dining:是任何文本,直到找到为止。这个演示说明了我遇到的两个问题。使用的正则表达式是:(?:\bSECOND\sLEVEL(\n\s+.*)*Dining:)(.*\b)

  1. 在您删除最后一行包含Laundry: 1. 这是由于比赛太多还是其他原因造成的?
  2. 删除该行后,正则表达式仅捕获 .. 下的最后一个匹配项,OTHER LEVEL返回 '2' 而不是 .. 下的匹配项SECOND LEVEL

有时Dining:将不存在SECOND LEVEL,因此不应返回任何内容。

什么是只捕获SECOND LEVEL'Dining:号的正则表达式,如果它不存在则不返回任何内容?首选正则表达式,如果可能,不要在 Java 中循环。谢谢