RegEx:将所有内容匹配到最后一个空格而不包括它

时间:2016-03-27 12:46:52

标签: regex autohotkey

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

中添加的字符
RENATA T. GROCHAL

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

编辑:我没有提到第二个捕获组不应该包含空格 - 它应该是GROCHAL而不是GROCHAL,前面有空格。

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

GROCHAL, RENATa T.

任何改进都是可取的。

3 个答案:

答案 0 :(得分:5)

^(.+)\s(.+)

替换字符串:

\2, \1

<强>更新

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

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

答案 1 :(得分:2)

使用积极的先行断言:

^(.+)(?=\s)

捕获第1组将包含匹配。

答案 2 :(得分:0)

我喜欢使用命名捕获组:

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