Я хочу захватить значения некоторых ключей, которые могут быть необязательными, в частности, рассмотреть строку ниже
@Foo1:dog|a=5|b=6|c=10|d=12|e=2
@Foo2:cat|a=12|c=10|d=11|e=123
@Foo1:bat|a=213123|b=10
@Foo3:pet|c=346
Теперь я хочу захватить строки между @ и:,: и |, и значение ключей b, d, которые могут быть необязательными. Я должен записать следующее
Foo1, dog, 6, 12
Foo2, cat, 11
Foo1, bat, 10
Foo3, pet
Я использую это регулярное выражение ^@(\w+):(\w+).*(?:b=(\d+)).*(?:d=(\d+))
, но оно работает только тогда, когда присутствуют оба b и d.