我正在通过正则表达式工作。我的问题是我的字符串可能包含2或3个名称。我想把一个名字,然后把第二个和第三个当作一个字符串。

这是小的powershell脚本:

$string = "ALDERS PAUL GERARD"
$string2 = "Alders Paul"

$pattern = '^(.*)\s(.*)$'



if($string -match $pattern){
    $last = $Matches[1]
    Write-Host "Success - $last"
}

if($string2 -match $pattern){
    $last = $Matches[1]
    Write-Host "Success - $last"
}

结果是成功-Alders Paul和成功-Alders

如何使正则表达式 anchor 定在行中的第一个空格而不是第二个空格?所以我得到成功-Alders和成功-Alders

最佳答案

您需要对第一个捕获组使用惰性匹配:

^(.*?)\s(.*)$
    ^

参见Demo 1

rexegg.com Lazy Quantifier Solution:



或者,使用非空白的简写类\S(即匹配除空白字符之外的任何字符):
^(\S*)\s(.*)$

这是一个second demo

10-06 04:23