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

php - PHP 正则表达式示例

我是一个学习PHP的初学者。我正在尝试使用正则表达式的各种组合。我指的是thisthis并尝试有关this的示例。

我的疑惑:

  1. 为什么preg_match_all('((a|b)*c)', 'ababc', $arr, PREG_PATTERN_ORDER);同时给出ababaca作为输出。不应该只是ababac吗?

  2. 假设我正在尝试读取所有可能的输出$arr,我该如何做到这一点而不必回显数组的每个元素?目前,我正在使用foreach迭代$arr. 这是正确的/有更好的方法吗?

  3. 为什么要preg_match_all()给出一个带有元素的二维数组,$arr[$i][0]并且在某些情况$arr[0][$i]$i没有可能的匹配项。有没有办法知道输出将如何存储?

很抱歉在一篇文章中发布了太多问题。请告诉我是否需要更改它。

0 投票
1 回答
14022 浏览

regex - C++11 正则表达式按名称捕获组

我正在将基于 boost 的正则表达式转换为 C++11 正则表达式。我有一个名为url

使用 boost,如果您有一个,smatch您可以调用match.str("url")以按名称获取捕获组。使用std::smatch,我只看到索引子匹配项。

如何使用 std::smatch 类访问 url 捕获?

0 投票
1 回答
591 浏览

python - 在不删除分隔符的情况下拆分字符串,但抑制空捕获组

我通过将整个捕获正则表达式放在括号中来拆分字符串而不删除分隔符。目的是匹配以一个或多个 '[!?]' 字符结尾的句子。

一切都很好,除了我现在得到了不需要的空捕获组- 如何以最不生硬和最正则表达式的方式抑制这些?

(这都深深嵌套在更复杂的正则表达式和子函数中,所以真的不想要黑客。我希望解决方案是正则表达式,所以我可以将它折叠成更复杂的正则表达式)

0 投票
2 回答
239 浏览

regex - Do the following capture group notation mean something to Perl

In the following why does the condition evaluate to false?

Does \11 or \111 have special meaning that Perl can not "see" \1?

0 投票
2 回答
684 浏览

regex - 如何从制表符分隔的文本行中提取两个中心列?

我需要两个正则表达式。一个会找到第二个数字块,一个会找到第三个数字块。我的数据是这样的:

一个代码找到04,另一个代码找到1988。我已经有了找到前 16 个数字和后 3 个数字的表达式,但我一直在寻找第二部分和第三部分的这两个数字。

0 投票
2 回答
660 浏览

regex - Perl 用变量和捕获组搜索和替换

正如问题所说,我正在尝试使用变量和捕获组进行搜索替换。也就是说,替换字符串包含 $1。我在这里这里遵循了答案,但它们对我不起作用;1 美元通过替换。你能帮我发现我的问题吗?

我正在从这样的文件中读取我的正则表达式:

如果我手动设置my $replace = '"$1 stuff"'替换按预期工作。我玩过/e我能想到的每一个单/双引号和组合。

0 投票
2 回答
187 浏览

java - 群体捕获的预期结果?

输出是

虽然我期待输出为

我预期输出的原因是

我不知道什么时候提到模式为"(.*)(\\d+)(.*)"; 为什么我没有得到预期的输出?

0 投票
1 回答
2547 浏览

regex - 在Expect中的正则表达式模式匹配中访问我的捕获组到一个变量

我无法让它工作,也不知道为什么。我有一行在行尾的数字之间有空格。我需要 Expect 匹配这一行并将数字和空格放入捕获组,我需要稍后在我的脚本中访问该捕获组。

示例行是:这是行 2 4 5 6

我的期望 -re 声明:期望 -re {^this\sis\sa\sline((\s\d)+$)}

然后我尝试使用 $expect_out(1,string) 访问捕获组

如果我检查http://gskinner.com/RegExr/它说匹配组 1 是“2 4 5 6”,所以我很确定模式匹配正确,我希望在 $ 中看到“2 4 5 6”期望输出(1,字符串),对吗?

但是,当我运行我的期望脚本时,我看到:

如何将“2 4 5 6”(或“2 4 5 6”)放入一个变量中,以便稍后在我的期望脚本中使用?

另外,当我引起你的注意时,这是什么Gate=Yes re=No意思?我假设 re=No 意味着正则表达式不匹配,但是Gate在 Expect 的世界里是什么?

0 投票
1 回答
1648 浏览

c++ - C++11 正则表达式替换

我有一个想要注销的 XML 字符串。此 XML 包含一些我想在发送到日志文件之前屏蔽掉的敏感数据。目前使用 std::regex 来做到这一点:

目前,数据正被 6 '.' 替换。字符,但是我真正想做的是用正确的点数替换敏感数据。即我想获得捕获组的长度并将确切的点数放下。

这可以做到吗?

0 投票
3 回答
1685 浏览

regex - 用于匹配域的不同部分的正则表达式

我正在尝试将域分成不同的类别(子域、域、TLD)并且遇到了麻烦..

我想不出一种方法来匹配任意数量的子域并且不超过我的域或 TLD 数学。我正在使用 PCRE 正则表达式。

当前正则表达式:

数据集:

注意:域前后都有空格,它们总是小写。

此数据如何匹配的示例:

apple.orange.banana.clevername.co.uk

子域:apple.orange.banana
域:google顶级域名
:co.uk

如果我将另一个水果添加到子域(strawberry.apple.orange.banana.clevername.co.uk),匹配将失败。如果我将子域正则表达式的 {0,3} 修改为更高数量或无限数量的匹配,它会变得过于贪婪,并且我不再得到域/tld 的正确匹配。这个例子:

修改正则表达式:

结果与新的正则表达式匹配:

草莓.苹果.橙.香蕉.聪明名字.co.uk

子域:strawberry.apple.orange.banana.clevername
域:
tld:co.uk

我确信正则表达式也不是最有效的,因此我们将不胜感激任何帮助或建议。谢谢!