为什么以下生成两个匹配项,因此"xx"
作为输出:
"Hello" -Replace '.*','x'
然而,这只会生成一个匹配项,因此输出中只有"x"
:
"Hello" -Replace '^.*','x'
我试图了解正则表达式的细微差别会导致第一个中的两个匹配?
您可以将其添加到https://regex101.com中,并且还会报告两个匹配,第一个匹配为"Hello"
,第二个匹配为""
答案 0 :(得分:5)
这是因为*
量词匹配零或更多字符。在这种情况下,它匹配整个单词Hello
,然后是一个空字符串。
使用.+
,它将匹配至少一个字符。
当您使用查看字符串开头的^.*
时,它只有一个匹配项,因为它不匹配空字符串,因为有一个H
首发中的角色。