Допустим, у меня есть строка:
$string1 = "Hello_World:How, are, you:-all -is -well"
Я хотел бы использовать регулярное выражение для сопоставления разделов строки, разделенных двоеточием на именованные группы. Например:
$pattern = "(?<first>.*)\:(?<second>.*)\:(?<third>.*)"
Этот шаблон $ будет успешно соответствовать $ string1, и я получу следующие совпадения:
first=Hello_World
second=How, are, you
third=-all -is -well
Это хорошо, но есть проблема. В $ string1 потенциально может отсутствовать третий раздел, например:
$string1 = "Hello_World:How, are, you"
К сожалению, эта $ string1 больше не соответствует шаблону регулярного выражения. Как сделать так, чтобы шаблон соответствовал обоим форматам строк? (т.е. у меня всегда должно быть «первое» и «второе» совпадение, и только «третье» совпадение, если оно предусмотрено).