为什么有两个匹配。*正则表达式?

时间:2017-08-04 17:10:10

标签: regex powershell

为什么以下生成两个匹配项,因此"xx"作为输出:

"Hello" -Replace '.*','x'

然而,这只会生成一个匹配项,因此输出中只有"x"

"Hello" -Replace '^.*','x'

我试图了解正则表达式的细微差别会导致第一个中的两个匹配?

您可以将其添加到https://regex101.com中,并且还会报告两个匹配,第一个匹配为"Hello",第二个匹配为""

1 个答案:

答案 0 :(得分:5)

这是因为*量词匹配或更多字符。在这种情况下,它匹配整个单词Hello,然后是一个空字符串。

使用.+,它将匹配至少一个字符。

当您使用查看字符串开头的^.*时,它只有一个匹配项,因为它不匹配空字符串,因为有一个H首发中的角色。