gpt4 book ai didi

带有非捕获组的正则表达式

转载 作者:行者123 更新时间:2023-12-04 00:45:38 24 4
gpt4 key购买 nike

我试图了解 Regex 中的非捕获组。

如果我有以下输入:

He hit the ball.  Then he ran.  The crowd was cheering!  How did he feel?  I felt so energized!

如果我想提取每个句子中的第一个单词,我试图使用匹配模式:
^(\w+\b.*?)|[\.!\?]\s+(\w+)

这会将所需的输出放在子匹配中。
Match   $1
He He
. Then Then
. The The
! How How
? I I

但我在想,使用非捕获组,我应该能够让他们回到比赛中。

我试过:
^(?:\w+\b.*?)|(?:[\.!\?]\s+)(\w+)

这产生了:
Match   $1
He
. Then Then
. The The
! How How
? I I


^(?:\w+\b.*?)|(?:[.!\?]\s+)\w+

产生:
Match
He
. Then
. The
! How
? I

我错过了什么?

(我正在使用 RegExLib.com 测试我的正则表达式,但随后会将其传输到 VBA)。

最佳答案

一个针对字符串“foo”的简单示例:

(f)(o+)

将产生 $1 = 'f' 和 $2 = '哦';
(?:f)(o+)

在这里, $1 = 'oo' 因为您已明确表示不捕获第一个匹配组。并且没有第二个匹配组。

对于您的场景,这感觉是正确的:
(?:(\w+).*?[\.\?!] {2}?)

请注意,最外面的组是非捕获组,而内部组(句子的第一个单词)是捕获。

关于带有非捕获组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com