我有这个工作的正则表达式。目前,我匹配;;
之间的所有数据我的输入=> 1;23;test X;2;
我的正则表达式=> (\d+);(\d+);(\w+? \w+);(\d+);
group1=1
group2=23
group3=test X
group4=2
我的问题是:如果更改,我的正则表达式代码将无效:
“测试X”由“测试”
或如果我有;;
在所有情况下我都进行匹配。
谢谢
答案 0 :(得分:1)
我建议使用
^(\d*);(\d*);(\w+(?: \w+)?)?;(\d*);$
请参见regex demo
基本上,您需要使用锚点来匹配整个字符串,而不是*
来匹配整个字符串,而不是+
来匹配0+个字符,而不是1+个字符,并且(...)?
要匹配一个可选组。 / p>
详细信息
^
-字符串锚点的开始(\d*)
-第1组:零个或多个数字;
-一个;
(\d*)
-第2组:零个或多个数字;
-一个;
(\w+(?: \w+)?)?
-可选的第3组:1个或更多单词字符,其后是与空格和1+个单词字符匹配的可选组;
-一个;
(\d*)
-第4组:零个或多个数字$
-字符串锚点的结尾