问题标签 [named-captures]

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 回答
816 浏览

regex - Perl 的 `(?PARNO)` 完成后会丢弃它自己的命名捕获吗?

递归正则表达式是否理解命名捕获?文档中有一个注释(?{{ code }}),它是一个独立的子模式,具有自己的一组捕获,在子模式完成时被丢弃,并且有一个注释(?PARNO),它“类似于(?{{ code }}).(?PARNO)完成后丢弃自己的命名捕获吗?

我正在写关于 Perl 的精通 Perl的递归正则表达式。perlre已经有一个平衡括号的例子(我在 Perl regex 中匹配平衡括号中展示了它),所以我想我会尝试平衡引号:

这有效,两个引号显示在$1and中$3

没关系。我明白那个。但是,我不想知道数字。因此,我将第一个捕获组命名为捕获并期待看到我之前在and%-中看到的两个子字符串:$1$2

我只看到第一个:

我希望这(?1)会重复第一个捕获组中的所有内容,包括命名捕获到said. 我可以通过命名一个新的捕获来解决这个问题:

现在我得到了我的预期:

我认为我可以通过将命名的捕获上移一级来解决这个问题:

但是,这并没有捕捉到较小的子字符串said

我想我理解这一点,但我也知道这里有些人实际上接触了实现它的 C 代码。:)

而且,当我写这篇文章时,我认为我应该超载 STORE 领带%-以找出答案,但是我必须找出如何做到这一点。

0 投票
2 回答
3259 浏览

java - 多个具有相同名称的正则表达式 java 组?

是否有任何 Java 正则表达式 api 或库可以在一种模式中接受多个具有相同名称的组?

0 投票
1 回答
11567 浏览

.net - 如何强制正则表达式匹配模式中最长的部分。

我在 .net 中有一个模式,我希望一个字符串与该模式的最长部分匹配

字符串:“我想匹配最长可用”

比赛后我们有:a="想要匹配最长的",b=""
但我想要:a="",b="最长"

0 投票
1 回答
1296 浏览

java - 带有命名组的 Java String.replaceAll 反向引用

您如何在 Java 的String.replaceAll方法中引用命名的捕获组?

作为我正在尝试做的一个简化示例,假设我有正则表达式

它表示字符串中的标签。一个字符串中可以有多个标签,我想用“render”捕获组的内容替换所有标签。

如果我有一个字符串

并想得到这样的结果"Billy bites Jake",我知道我可以实现我的目标

但我希望能够使用类似的东西

有没有办法做到这一点?使用"$render"我得到IllegalArgumentException: Illegal group reference.

0 投票
0 回答
355 浏览

c++ - Boost.regex 使用命名捕获组支持 icu

下面的测试程序使用 boost-regex 中的命名捕获支持从日期中提取年、月和日字段(只是为了说明命名捕获的使用):

编译

这个小程序将按预期产生以下输出:

接下来,我将普通的正则表达式部分替换为 u32regex 对应部分:

构建运行程序现在会导致运行时异常,提示未初始化的 shared_ptr:

我没有直接使用共享指针。

这是 boost 1.58.1 和 gcc 5.3.1。

我怎样才能让程序的 u32regex 版本也正确运行?

0 投票
1 回答
1088 浏览

ruby - 如何在不拆分字符串的情况下获得像 Rubular 这样的红宝石匹配组

Rubular ( Example ) 如何获得匹配组?

match方法(在示例中)仅返回第一个匹配项。

scan方法返回一个没有命名捕获的数组。

获取一组命名捕获(不拆分)的最佳方法是什么?

0 投票
0 回答
272 浏览

python - 当命名捕获组不能使用两次时,如何在非捕获组之前或之后使用命名正则表达式捕获?

我在 python 脚本中使用正则表达式来捕获命名组。该组出现在分隔符字符串“ S ”之前或之后。我的困惑来自无法在同一个正则表达式中两次使用命名捕获组。

我想使用以下无效(命名组使用两次)正则表达式:

描述:

我真的很想命名我捕获的重要组。我可以删除名称并使其正常工作。我还可以将单个表达式拆分为两个表达式(OR 的每一侧一个),然后在 python 脚本中搜索选择要使用哪个表达式进行登录。

谢谢!

示例输入

示例输出

基于与第二种情况不匹配的注释的正则表达式。

0 投票
1 回答
213 浏览

ruby - 正则表达式中的“+0”是什么意思 \k?

我是 Ruby 中正则表达式的新手,我似乎找不到任何可靠的文档来说明什么\k<name+0>意思。这是+0我没有得到的部分。

这是一个例子——这个正则表达式匹配回文:

当我删除它时+0\k<l+0>它不再正确匹配。
我的测试:

我所做的只是删除+0. 我还没有找到任何文档或示例,有人能指出我正确的方向吗?

0 投票
2 回答
308 浏览

regex - 如何为命名捕获组创建条件正则表达式?

我们正在寻找将我们的 PMDF 日志转储到 Splunk 中,并且我正在尝试解析 PMDF SMTP 日志,特别是消息,并且我遇到了一个问题,即命名捕获组 (dst_channel) 可能有也可能没有值。到目前为止,这是我的正则表达式:

我能够匹配以下消息,其中 tcp_msx_out_2 是 dst_channel

但是,我不匹配以下不包含 dst_channel 值的日志:

我拥有的下一个命名捕获组是第一个消息示例中的代码 E 和第二个消息示例中的 Q),当 dst_channel 不存在时,正则表达式不会捕获所有代码。

如何修改条件语句的正则表达式,以便如果 dst_channel 存在,它会获取值,但如果没有,正则表达式会继续并能够始终如一地获取我拥有的其他命名捕获组的值?

0 投票
2 回答
397 浏览

regex - 为什么我不能在子字符串中捕获多个数字?

我正在创建正则表达式以从日志文件中提取各种字段。我使用一些工具创建了一个正则表达式,它几乎完成了。唯一的问题是对于一个字段,它只提取一位数字而不是完整数字。为了更好地理解,我已将其保存到以下链接。

我的正则表达式演示

图案:

细绳:

电流输出:

预期输出:

团体ParNew_before_1 378633

在上面的示例中:ParNew_before_1 仅提取一位数字的组。