Я хочу зафиксировать группу в необязательной части строки.
Например:
В строке "firstName: Bill-lastName: Gates" я хочу захватить 2 группы:
- Счет
- Ворота
Я использую это регулярное выражение:
firstName:(.*)-lastName:(.*)
Но когда часть lastName необязательна, я все равно хочу захватить первую группу (firstName).
Я использовал это регулярное выражение, чтобы сделать часть lastName необязательной (в группе без захвата):
firstName:(.*)(?:-lastName:(.*))?
Используя это обновленное регулярное выражение, получаются следующие группы:
когда часть lastName отсутствует, например "firstName: Bill", захваченные группы:
- Bill
- /пустой строки/
что правильно,
когда присутствуют части firstName и lastName: "firstName: Bill-lastName: Gates", группы неверны:
- Bill-lastName:Gates
- /пустой/
Я думаю, что это связано с жадностью первой группы захвата, но как настроить это регулярное выражение, чтобы оно работало, когда часть lastName является необязательной?