假设我有一个字符串:
$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 不再匹配正则表达式模式。如何使模式匹配两种格式的字符串?(即我应该总是有一个“第一”和“第二”匹配,如果提供的话,只有一个“第三”匹配)。