gpt4 book ai didi

regex - Powershell Regex - optional 命名组匹配

转载 作者:行者123 更新时间:2023-12-04 11:42:51 25 4
gpt4 key购买 nike

假设我有一个字符串:

$string1 = "Hello_World:How, are, you:-all -is -well"

我想使用正则表达式将由冒号分隔的字符串部分匹配到命名组中。例如:
$pattern = "(?<first>.*)\:(?<second>.*)\:(?<third>.*)"

这个 $pattern 将成功匹配 $string1 ,我最终会得到以下匹配项:
first=Hello_World
second=How, are, you
third=-all -is -well

这很好,但有一个问题。 $string1 可能会丢失第三部分,例如:
$string1 = "Hello_World:How, are, you"

不幸的是,这个 $string1 不再匹配正则表达式模式。如何使模式匹配两种格式的字符串? (即我应该总是有“第一”和“第二”匹配,如果提供的话,只有“第三”匹配)。

最佳答案

使用 ?量词和非捕获组。另外,不要使用 .* !

(?<first>[^:]*):(?<second>[^:]*)(?::(?<third>.*))?

此外,您应该至少在开始时 anchor 定您的正则表达式。

关于regex - Powershell Regex - optional 命名组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8583316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com