文字列があるとしましょう:
$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 の 3 番目のセクションが欠落している可能性があります。次に例を示します。
$string1 = "Hello_World:How, are, you"
残念ながら、この $string1 はもはや正規表現パターンと一致しません。パターンが文字列の両方の形式に一致するようにするにはどうすればよいですか? (つまり、常に「1 番目」と「2 番目」の一致が必要であり、提供されている場合は「3 番目」の一致のみが必要です)。