Regex 为什么这个正则表达式不能匹配第二个6位数字?

Regex 为什么这个正则表达式不能匹配第二个6位数字?,regex,powershell,Regex,Powershell,我无法理解为什么以下PowerShell无法工作: ([regex]"(^|\D)(\d{6})(\D|$)").Matches( "123456 123457" ).Value 上述代码生成: 123456 为什么它不匹配这两个数字?这个“(^ |\D)(\D{6})(\D |$)”regex匹配并使用6位数字前后的非数字字符(即123456之后的空格在第一次迭代中使用) 使用非消耗性结构,向后看和向前看: "(?<!\d)\d{6}(?!\d)" ”(?因此,如果我有这个权利,您

我无法理解为什么以下PowerShell无法工作:

([regex]"(^|\D)(\d{6})(\D|$)").Matches( "123456 123457" ).Value
上述代码生成:

123456
为什么它不匹配这两个数字?

这个
“(^ |\D)(\D{6})(\D |$)”
regex匹配并使用6位数字前后的非数字字符(即
123456
之后的空格在第一次迭代中使用)

使用非消耗性结构,向后看和向前看:

"(?<!\d)\d{6}(?!\d)"

”(?因此,如果我有这个权利,您的意思是,如果不使用lookback或lookahead,第二个匹配的起点是第一个匹配结束后的第一个字符。在我的示例中,我的正则表达式匹配第一个匹配上的空格,所以第二个正则表达式从1开始。是的,第二个匹配从
1
I搜索n
123457
“word”.PS代码片段:
$string-match'(?我的答案对你有用吗?