我正在编写一个powershell core 7脚本,在Windows环境中运行。
正则表达式的要求:
示例:
当前正则表达式:
"[^0-9]+\.[^0-9]+\.(specificPartA.specificPartB|specificPartC.specificPartD)"
这里失败了:
if ("foo.specificPartA.specificPartB" -match "[^0-9]+\.[^0-9]+\.(specificPartA.specificPartB|specificPartC.specificPartD)") { write-output "matches" } else { Write-Output "doesn't match" }
3 部分应该匹配但不匹配。
请问我该如何解决?
我正在运行 pwsh 终端的变体来测试我的正则表达式:
if ("foo.specificPartA.specificPartB" -match "[^0-9]+\.[^0-9]+\.(specificPartA.specificPartB|specificPartC.specificPartD)") { write-output "matches" } else { Write-Output "doesn't match" }
您可以断言字符串的开头,然后匹配除数字或点之外的 1 个以上字符,然后匹配一个点。
然后您可以选择为第二部分匹配相同的模式。
如果您只想匹配,则不需要捕获组,并且必须转义点才能按字面匹配。
^[^0-9.]+\.(?:[^0-9.]+\.)?(?:specificPartA\.specificPartB|specificPartC\.specificPartD)
查看正则表达式演示。