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

Rob*_*son 1 regex powershell

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

"Hello" -Replace '.*','x'
Run Code Online (Sandbox Code Playgroud)

虽然这只是生成一个匹配,因此只"x"在输出中:

"Hello" -Replace '^.*','x'
Run Code Online (Sandbox Code Playgroud)

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

您可以将其添加到https://regex101.com,它还会报告第一场比赛的两场比赛,"Hello"第二场比赛是""

Edm*_*ues 6

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

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

当你使用^.*查看字符串开头的,它只有一个匹配,因为它不能匹配那里的空字符串,因为H在开始时有一个字符.

  • 或者你可以简单地取出`g`标志 (2认同)