Regex-如何将此字符串拆分为两部分



我想把这个字符串分成两部分:

C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US

我希望它总是在Setup.exe之后分裂,所以它应该是:

$part1 = "C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe"
$part2 = "/P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US"

这样做的功能应该是什么?

谢谢

$string = "C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US" 
$array = $string -Split "(Setup.exe)"
$array[0]+$array[1]
$array[2]

还有其他简单的方法。这是一种方法。

这里有几个替代方案:

$string = 'C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US'

方法1:使用-split

$part1, $part2 = $string -split '^(.+.exe)s(.+)$'
$part1   # --> C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe
$part2   # --> /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US

方法2:使用[regex].Match()

$part1, $part2 = ([regex]'(?i)^(.+.exe)s(.+)$').Match($string).Groups[1..2].Value
$part1   # --> C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe
$part2   # --> /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US

方法3:使用-replace和方法.Split()

$part1, $part2 = ($string -replace '^(.+.exe)s(.+)$', '$1|$2').Split('|')
$part1   # --> C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe
$part2   # --> /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US

方法4:使用字符串方法.IndexOf().Substring()

$split = $string.IndexOf('.exe')
if ($split -ge 0) {
$part1 = $string.Substring(0, $split + 4)
$part2 = $string.Substring($split + 5)
}
$part1   # --> C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe
$part2   # --> /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US

只需拆分空白并将它们重新组合在一起。您甚至可能不需要将$part2数组连接在一起,这取决于您作为-argument列表的使用或与调用运算符的使用。

$string = 'C:Program FilesAutodeskDWG TrueView 2021 - EnglishSetupen-usSetupSetup.exe /P {28B89EEF-4356-0409-0100-CF3F3A09B77D} /M AOEM /language en-US'
$split = -split $string
$split
C:Program
FilesAutodeskDWG
TrueView
2021
-
EnglishSetupen-usSetupSetup.exe
/P
{28B89EEF-4356-0409-0100-CF3F3A09B77D}
/M
AOEM
/language
en-US
$part1 = $split[0..5] -join ' '
$part2 = $split[6..$split.length] -join ' '
# $part2 = $split[6..$split.length]

最新更新