正则表达式:将所有内容匹配到最后一个空格而不包含它

men*_*ith 4 regex autohotkey

我想将字符串中的所有内容匹配到最后一个空格,但不包括它。为了举例,我想匹配以粗体显示的字符:

雷纳塔·格罗查

到目前为止,我有,^(.+\s)(.+)但是它与最后一个空格匹配,我不希望这样。正像我一样,RegEx也可以使用英语以外的其他语言。

编辑:我没有提到的第二个捕获组不应该包含空间-它应该是GROCHALGROCHAL与前一个空间。

编辑2:基于两个答案提供的新RegEx是:^((.+)(?=\s))\s(.+)用于替换匹配项的RegEx是\3, \1。它可以达到预期的结果:

GROCHAL, RENATa T.
Run Code Online (Sandbox Code Playgroud)

任何改进都是可取的。

Jam*_*uck 6

使用正向前瞻断言:

^(.+)(?=\s)
Run Code Online (Sandbox Code Playgroud)

捕获组 1 将包含比赛。


med*_*088 5

^(.+)\s(.+)

带有替换字符串:

\2, \1

更新:

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

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

  • 您宁愿解释为什么他必须尝试它,以及为什么它可以解决他的问题。 (2认同)