如何在扑扑中将空组与正则表达式匹配?

时间:2018-12-17 10:54:50

标签: regex dart flutter

我有这个工作的正则表达式。目前,我匹配;;

之间的所有数据

我的输入=> 1;23;test X;2;

我的正则表达式=> (\d+);(\d+);(\w+? \w+);(\d+);

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

我的问题是:如果更改,我的正则表达式代码将无效:

“测试X”由“测试” 或如果我有;;

之类的空数据

在所有情况下我都进行匹配。

谢谢

1 个答案:

答案 0 :(得分:1)

我建议使用

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

请参见regex demo

基本上,您需要使用锚点来匹配整个字符串,而不是*来匹配整个字符串,而不是+来匹配0+个字符,而不是1+个字符,并且(...)?要匹配一个可选组。 / p>

详细信息

  • ^-字符串锚点的开始
  • (\d*)-第1组:零个或多个数字
  • ;-一个;
  • (\d*)-第2组:零个或多个数字
  • ;-一个;
  • (\w+(?: \w+)?)?-可选的第3组:1个或更多单词字符,其后是与空格和1+个单词字符匹配的可选组
  • ;-一个;
  • (\d*)-第4组:零个或多个数字
  • $-字符串锚点的结尾