Как сопоставить пустую группу с регулярным выражением в флаттере? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть это рабочее регулярное выражение.в настоящее время я сопоставляю все данные между ;;

мой ввод => 1;23;test X;2;

мое регулярное выражение => (\d+);(\d+);(\w+? \w+);(\d+);

group1=1
group2=23
group3=test X
group4=2

Моя проблема: мой код регулярного выраженияне работает, если я изменяю:

"test X" на "test" или если у меня есть пустые данные, такие как ;;

Я ищу совпадение во всем этом случае.

спасибо

1 Ответ

0 голосов
/ 17 декабря 2018

Я предлагаю использовать

^(\d*);(\d*);(\w+(?: \w+)?)?;(\d*);$

См. Демонстрационный пример regex

Как правило, вам нужны якоря для соответствия всей строке, * вместо +для соответствия 0+ символов, а не 1+ символов, и (...)? для соответствия необязательной группе.

Подробности

  • ^ - начало строкиякорь
  • (\d*) - группа 1: ноль или более цифр
  • ; - a ;
  • (\d*) - группа 2: ноль или более цифр
  • ; - a ;
  • (\w+(?: \w+)?)? - необязательная группа 3: 1 или более слов с последующим добавлением необязательной группы, соответствующей пробелу, и 1+ слов с символами
  • ; - a ;
  • (\d*) - Группа 4: ноль или более цифр
  • $ - конец привязки строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...