小编Mon*_*eGA的帖子

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

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

如果我有以下输入:

He hit the ball.  Then he ran.  The crowd was cheering!  How did he feel?  I felt so energized!
Run Code Online (Sandbox Code Playgroud)

如果我想提取每个句子中的第一个单词,我试图使用匹配模式:

^(\w+\b.*?)|[\.!\?]\s+(\w+)
Run Code Online (Sandbox Code Playgroud)

这会将所需的输出放在子匹配中。

Match   $1
He      He  
. Then  Then
. The   The
! How   How
? I     I
Run Code Online (Sandbox Code Playgroud)

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

我试过:

^(?:\w+\b.*?)|(?:[\.!\?]\s+)(\w+)
Run Code Online (Sandbox Code Playgroud)

这产生了:

Match   $1
He  
. Then  Then
. The   The
! How   How
? I     I
Run Code Online (Sandbox Code Playgroud)

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

产生:

Match
He
. Then
. The
! How
? I
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

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

regex

4
推荐指数
1
解决办法
9734
查看次数

标签 统计

regex ×1