Регулярное выражение (C#) - не могу выяснить, как справиться с отсутствующим полемC#

Место общения программистов C#
Ответить
Anonymous
 Регулярное выражение (C#) - не могу выяснить, как справиться с отсутствующим полем

Сообщение Anonymous »

шаблон:

Код: Выделить всё

,LINE:(?\d+).*?(?:,AMOUNT (?(?:A1|A2)):(?[^,]*)).*?(?:,AMOUNT (?(?:A1|A2)):(?[^,]*))
input1:

Код: Выделить всё

front stuff,LINE:1,unimportant stuff,AMOUNT A1:1.10,AMOUNT A2:1.20,more unimportant stuff,LINE:2,unimportant stuff, AMOUNT A2:2.10,AMOUNT A1:2.20,more unimportant stuff,LINE:3,unimportant stuff,AMOUNT A1:3.10,AMOUNT A2:3.20, additional unimportant stuff
Результаты - это работает, как я ожидал

Код: Выделить всё

line=1, amount_type1=A1, amount=1.10, amount_type2=A2, amount2=1.20
line=2, amount_type1=A2, amount=2.10, amount_type2=A1, amount2=2.20
line=3, amount_type1=A1, amount=3.10, amount_type2=A2, amount2=3.20
< /code>
Я хочу обновить регуляцию, чтобы справиться с ситуацией, когда одно или оба количества отсутствуют
Я попытался добавить "?" К концу группы, не являющихся группами, но это не так 
[b] input 2: [/b] 
front stuff,LINE:1,unimportant stuff,**missing amt 1**,AMOUNT A2:1.20,more unimportant stuff,LINE:2,unimportant stuff, AMOUNT A2:2.10,AMOUNT A1:2.20,more unimportant stuff,LINE:3,unimportant stuff,AMOUNT A1:3.10,AMOUNT A2:3.20, additional unimportant stuff
Результаты 2 (строка 1 захватывает первое количество из строки 2)

Код: Выделить всё

line=1, amount_type1=A2, amount=1.20, amount_type2=A2, amount2=2.10
line=3, amount_type1=A1, amount=3.10, amount_type2=A2, amount2=3.20
желаемый результат:

Код: Выделить всё

line=1, amount_type1=, amount=, amount_type2=A2, amount2=1.20
< /code>
или < /p>
line=1, amount_type1=A2, amount=1.20, amount_type2=, amount2=
< /code>
с < /p>
line=2, amount_type1=A2, amount=2.10, amount_type2=A1, amount2=2.20
line=3, amount_type1=A1, amount=3.10, amount_type2=A2, amount2=3.20
Заранее спасибо за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/797 ... sing-field
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»