Powershell Regex - необязательные совпадения именованной группы

Допустим, у меня есть строка:

$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 больше не соответствует шаблону регулярного выражения. Как сделать так, чтобы шаблон соответствовал обоим форматам строк? (т.е. у меня всегда должно быть «первое» и «второе» совпадение, и только «третье» совпадение, если оно предусмотрено).

7
задан DaveUK 20 December 2011 в 23:28
поделиться