Anonymous
Регулярное выражение (C#) - не могу выяснить, как справиться с отсутствующим полем
Сообщение
Anonymous » 31 июл 2025, 10:49
шаблон:
Код: Выделить всё
,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
1753948142
Anonymous
[b] шаблон: [/b] [code],LINE:(?\d+).*?(?:,AMOUNT (?(?:A1|A2)):(?[^,]*)).*?(?:,AMOUNT (?(?:A1|A2)):(?[^,]*)) [/code] [b] input1: [/b] [code]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 [/code] [b] Результаты - это работает, как я ожидал [/b] [code]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 [/code] [b] Результаты 2 (строка 1 захватывает первое количество из строки 2) [/b] [code]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 [/code] [b] желаемый результат: [/b] [code]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 [/code] Заранее спасибо за любую помощь! Подробнее здесь: [url]https://stackoverflow.com/questions/79720575/regular-expression-c-cant-figure-out-how-to-handle-missing-field[/url]