You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell的-split运算符并保留分隔所用子字符串?

解决PowerShell字符串分割保留数字前缀的问题

针对你遇到的需求,这里提供两种可行的方法:

方法一:正则匹配提取(推荐)

直接用正则表达式匹配所有「数字+后续非数字内容」的片段,一步到位得到目标数组:

$inputStr = "1one2two3three4four5five"
$result = [regex]::Matches($inputStr, '\d\D+') | ForEach-Object { $_.Value }
$result

执行后输出:

1one
2two
3three
4four
5five

如果原字符串开头有多余空格,先加$inputStr = $inputStr.Trim()处理即可。

方法二:带捕获组的分割拼接

如果坚持要用-split命令,可以通过捕获组保留分隔符(数字),再将数字和后续内容拼接:

$inputStr = "1one2two3three4four5five"
$splitArr = $inputStr -split '(\d)'
$result = for ($i = 1; $i -lt $splitArr.Count; $i += 2) {
    $splitArr[$i] + $splitArr[$i + 1]
}
$result

原理:-split '(\d)'会把每个数字作为捕获组保留在分割结果中,得到的数组是'', '1', 'one', '2', 'two'...,遍历数组时每两个元素(数字+后续内容)拼接成目标项。

内容的提问来源于stack exchange,提问作者Ralf_Reddings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:56:04