简单的问题:为什么
"x" -replace ".*", "y"
产生“yy”?
"x" -replace ".*", "y"
相当于
[Regex]::replace("x",".*","y")
结果yy
您看到的内容基于其工作原理,根据 MSDN:
在指定的输入字符串中,替换所有字符串匹配一个
具有指定替换字符串的指定正则表达式。
http://msdn.microsoft.com/en-us/library/e7f5w83z.aspx http://msdn.microsoft.com/en-us/library/e7f5w83z.aspx
替换将找到与正则表达式匹配的字符串并将其替换为给定的替换。因此,将 x 替换为 y,然后将空字符串替换为 y,然后得到yy
.
这可以通过执行来验证[Regex]::matches("x",".*")
- 它给出两个匹配项 - 一个用于空字符串,另一个用于 x。
就其他正则表达式引擎而言,发生这种情况的原因是g
或全局标志。
这也可以在Python中验证如下(只是为了表明这不仅限于Powershell / .Net):
>>> re.findall(".*","x")
['x', '']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)