Regex 在字符上拆分字符串,除非折叠字符是转义符
输入: 输出:Regex 在字符上拆分字符串,除非折叠字符是转义符,regex,powershell,split,Regex,Powershell,Split,输入: 输出: $string = "this-is-just-an--example" 尝试了以Regex.Split和“-[^-]”或“-([^])”为中心的各种方法。 不起作用的事情的示例: this is just an-example 当然,我可以使用String.Split和iterate,并意识到空字符串意味着我遇到了转义字符。。。但这是丑陋的代码。 P.S.尝试搜索Dupped几分钟,但没有找到任何内容。使用lookahead和lookahead断言,然后执行替换以消除剩余的
$string = "this-is-just-an--example"
尝试了以Regex.Split和“-[^-]”或“-([^])”为中心的各种方法。
不起作用的事情的示例:
this
is
just
an-example
当然,我可以使用String.Split和iterate,并意识到空字符串意味着我遇到了转义字符。。。但这是丑陋的代码。
P.S.尝试搜索Dupped几分钟,但没有找到任何内容。
使用lookahead和lookahead断言,然后执行替换以消除剩余的双字符:
[regex]::Split( $string, "-[^-]" )
[regex]::Split( $string, "-([^-])" )
$string=“这只是一个--示例”
$string-split'(?使用前向和后向断言,然后执行替换以消除剩余的双字符:
[regex]::Split( $string, "-[^-]" )
[regex]::Split( $string, "-([^-])" )
$string=“这只是一个--示例”
$string-split'(?首先将转义序列替换为另一个值,这样就不需要复杂的拆分条件。所需的只是字符串中尚未出现的唯一替换值
例如,使用@
作为$string='这只是一个--example'
的替换值,以下行将得到所需的结果:
$string-replace'-','@'-split'-'-replace'@','-'
-replace'--','@'
消除转义序列(这只是-an@example
)
-split'-'
然后分离结果(给出一个数组,其中包含this
,is
,just
和an@example
)
最后,-替换'@','-'
恢复转义值(给出这个
,是
,只是
,一个例子
)
和都是使用正则表达式(相当于.NET中的和方法)处理字符串的内置PowerShell运算符。首先用另一个值替换转义序列可以消除复杂拆分条件的需要。所需的只是字符串中尚未出现的唯一替换值
例如,使用@
作为$string='这只是一个--example'
的替换值,以下行将得到所需的结果:
$string-replace'-','@'-split'-'-replace'@','-'
-replace'--','@'
消除转义序列(这只是-an@example
)
-split'-'
然后分离结果(给出一个数组,其中包含this
,is
,just
和an@example
)-替换'@','-'
恢复转义值(给出这个
,是
,只是
,一个例子
)和都是使用正则表达式(相当于.NET中的和方法)处理字符串的内置PowerShell运算符。
(?将仅在单破折号上匹配,但它不适用于--b-c->a--,b,c(?仅在单破折号上匹配,但在a--b-c->a--,b,c上不起作用。接受,然后在没有解释的情况下被否决。有趣。接受,然后在没有解释的情况下被否决。