我正在通过正则表达式工作。我的问题是我的字符串可能包含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