问题标签 [capturing-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 回答
162 浏览

regex - 这个用于电子邮件地址验证的正则表达式如何工作?

在搜索用于电子邮件地址验证的正则表达式时,我遇到了这个页面:http ://www.regular-expressions.info/email.html 。我无法理解。

它说: \b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+.)+[AZ]{2,4}\b 将匹配 john@server。 department.company.com 但不是 john@aol...com。

你能(?:[A-Z0-9-]+\.)详细解释一下它是如何工作的,以及它是如何不匹配john@aol...com和匹配另一个的吗?

0 投票
2 回答
1864 浏览

python - 积极的后视与非捕获组:不同的行为

我在代码中使用了 python 正则表达式(re模块),并注意到这些情况下的不同行为:

我需要得到的只是['xyz', 'abc']. 为什么这些示例的行为不同以及如何获得所需的结果?

0 投票
2 回答
2556 浏览

c# - Visual Studio 正则表达式替换重复捕获组

我正在做一个相当大的项目(c#),从一个地方到另一个地方,我的片段看起来像这样:

逗号分隔的字符串具有任意长度(平均范围从 1 到 5,但我不确定是否还有更多)。到目前为止,我能够找到我想要使用的所有事件:

现在对于每一个事件我想用这样的东西替换它:

手动替换每个事件是不可行的,是否有替换正则表达式可以完成这项工作?

谢谢

0 投票
2 回答
355 浏览

php - PHP 正则表达式将捕获组变量与数字结合起来

例如,我想替换: margin:0px;margin:0;
是我想出的正则表达式:$data = preg_replace('/([^\d])0px/', '$1 0', $data);

$1在本例中将代表:

现在我如何$1与一个数字组合而不用 php 将其解释为另一个捕获组变量并且不使用我上面所做的空格?

0 投票
6 回答
14533 浏览

javascript - 获取 JavaScript 正则表达式中每个捕获的索引

我想匹配一个像/(a).(b)(c.)d/with这样的正则表达式"aabccde",并得到以下信息:

我怎样才能做到这一点?String.match 返回匹配列表和完整匹配开始的索引,而不是每个捕获的索引。

编辑:一个不适用于普通 indexOf 的测试用例

注意:问题类似于Javascript Regex: How to find index of each subexpression?,但我无法修改正则表达式以使每个子表达式都成为捕获组。

0 投票
2 回答
9703 浏览

javascript - 正则表达式仅捕获匹配中捕获组的最后一个实例

我有以下两种不同语言的正则表达式,它们产生相同的奇怪结果(javaScript 和 Flash)。我想知道的不是如何解决它,而是为什么会发生这种行为?

正则表达式:

这里的目标是匹配一个带括号的字符串,并确保我不会停在一个转义的括号上。

如果我有文本输入[abcdefg],则它是正确匹配的,但作为捕获组的一部分返回的唯一内容是g,正如我所期望的那样abcdefg。如果我将表达式更改为 \[((?:\\{2}|\\\]|[^\]])*)\],那么我会得到我想要的结果。

那么为什么会这样呢?这在其他语言中会保持一致吗?

注意:简化表达式以\[([^\]])*\]产生相同的问题。

0 投票
2 回答
69 浏览

java - 关于正则表达式捕获组的说明

直接来自这个 java API (ctrl + f) +“组名”:

与组关联的捕获输入始终是该组最近匹配的子序列。如果由于量化而对组进行第二次评估,则如果第二次评估失败,则将保留其先前捕获的值(如果有)。例如,将字符串“aba”与表达式 (a(b)?)+ 匹配,将第二组设置为“b”。所有捕获的输入在每次匹配开始时都会被丢弃。

我知道捕获组如何工作以及它们如何与反向引用一起工作。但是,我没有得到上面引用的 API 位的意义。换句话说,有人能把它放下吗?

提前致谢。

0 投票
1 回答
158 浏览

python - 如何在正则表达式中转义数字

所以我用re模块替换字符。
我有一个字符串'abc_def',需要1_.
所以我正在这样做。

但这需要 \11 作为第 11 个捕获组,而不是分别为 \1 和 1。

顺便说一句r\1,1\3,它应该正常工作,返回abc_,1def.

需要帮忙 !

0 投票
1 回答
48 浏览

java - 正则表达式:从被许多可选组包围的特定组中获取信息

假设我有一个匹配这样的字符串的正则表达式:

其中 B、D 和 F 组是可选的。

我怎样才能得到只是组E?我问这个是因为,我认为我不能直接打电话M.group(5),因为如果我的匹配器(M)没有找到 B 组和 D 组,那么 E 组实际上是第 3 组而不是第 5 组。

不过我确实有一个想法。如果我做了类似的事情:

其中 A、B、C 和 D 都是第 1 组,我可以调用第 2 组来获取 E 吗?

谢谢你。

0 投票
3 回答
1320 浏览

python - 正则表达式 - 如何匹配特定长度的唯一字符组

我正在寻找一个正则表达式,它仅在其所有字符都是唯一的情况下才匹配特定长度的特定字符组。

对于给定的字符串示例:

123132213231312321112122121111222333211221331

123, 132, 213, 231, 312, 321匹配 112, 122, 121, 111, 313, 322, 221, 323, 131,等不匹配。

我试过(?:([0-9])(?!.{3}\1)){3}但完全错误