正则表达式:匹配直到最后 space 的所有内容而不包括它

RegEx: Match everything up to the last space without including it

我想匹配字符串中直到最后一个 space 的所有内容,但不包括它。举例来说,我想匹配我在 bold:

中输入的字符
RENATA T. GROCHAL

到目前为止我有 ^(.+\s)(.+) 但是,它与最后一个 space 匹配,我不希望它匹配。 RegEx 应该也适用于英语以外的其他语言,就像我的一样。

编辑: 我没有提到第二个捕获组不应该包含 space – 它应该是 GROCHAL 而不是 GROCHAL 前面有一个 space。

编辑 2: 基于两个答案提供的内容,我的新 RegEx 是:^((.+)(?=\s))\s(.+) 用于替换匹配项的 RegEx 是 , .它实现了预期的结果:

GROCHAL, RENATa T.

任何改进都是可取的。

使用积极的先行断言:

^(.+)(?=\s)

捕获组 1 将包含匹配项。

^(.+)\s(.+)

替换字符串:

,

更新:

另一个可以折叠两个捕获组之间的额外空间的版本:

^(.+?)\s+(\S+)$

我喜欢使用命名捕获组:

rawName = RENATA T. GROCHAL
RegexMatch(rawName, "O)^(?P<firstName>.+)\s(?P<lastName>.+)", match)
MsgBox, % match.lastName ", " match.firstName