无法用正则表达式分割字符串:apple与apples匹配失败问题排查
问题分析与解决
正则表达式的错误原因
你用的apple*和apple?逻辑完全不对,正则里的*和?是修饰紧邻它的前一个字符,不是整个单词的后缀:
apple*:实际匹配appl后面跟0个或多个e(比如appl、apple、appleee),根本匹配不到apples里的sapple?:实际匹配appl后面跟0个或1个e(也就是appl或apple),同样碰不到apples的s
正确的正则写法
要同时匹配apple和apples,应该用apples?——这里的?修饰前面的s,表示s可以有0个或1个,刚好覆盖两种单词形式。
修正后的代码
如果不需要保留分割的apple/apples:
$spl = 'apples?' 'This apple for you','These apples for you' | % {$_ -split $spl}
如果想把匹配的单词也保留在分割结果里(对应你原代码用捕获组的需求):
$spl = '(apples?)' 'This apple for you','These apples for you' | % {$_ -split $spl}
内容的提问来源于stack exchange,提问作者Oleg0341
相关产品推荐
相关产品推荐

