输入:
$string = "this-is-just-an--example"输出:
this
is
just
an-example尝试了以Regex.Split和"-^-“或"-(^)”为中心的各种方法。不起作用的例子:
[regex]::Split( $string, "-[^-]" )
[regex]::Split( $string, "-([^-])" )当然,我可以使用String.Split并迭代,并意识到空字符串意味着我遇到了转义字符……但这是丑陋的代码。另外,我试着搜索了几分钟,什么也没找到。
发布于 2012-03-29 09:32:40
使用前视和后视断言,然后执行替换以消除剩余的双倍字符:
$string = "this-is-just-an--example"
$string -split '(?<!-)-(?!-)' -replace '--','-'
this
is
just
an-example发布于 2012-06-13 07:01:54
首先用另一个值替换转义序列,这样就不需要复杂的拆分条件。所需要的只是一个尚未出现在字符串中的唯一替换值。
例如,使用@作为$string = 'this-is-just-an--example'的替换值,以下行将获得所需的结果:
$string -replace '--','@' -split '-' -replace '@','-'-replace '--','@'消除转义序列(给出代码),-split '-'然后分离结果(给出一个包含this、is、just和an@example的数组),-replace '@','-'恢复转义值(给出this,<代码>D18,<代码>D19,-split和-replace都是内置的PowerShell运算符,它们使用正则表达式处理字符串(相当于.NET中的Regex.Split和Regex.Replace方法)。
https://stackoverflow.com/questions/9917873
复制相似问题