我试图了解 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 ×1