我想匹配下面的字符串模式。
ABCD; ABCD; sdfdf; sdfdf; sdsdf;
我使用了以下正则表达式。但它没有给出预期的结果。
(((.{0,5});){0,4}([^;]{0,5})){1}
一旦整个字符串不匹配,它应该是不匹配的。
我不知道如何制作最后一个角色';'或空的。所以这不包括在我提供的逻辑中。
详细说明 允许使用以下模式。
sdfsg;;;;;
sfdsf;sdfsd;sfsdf;;
;;;;
不匹配的例子
sdfsdf;sdfsd;sdf;sdfd;sdf;sdf;sdf
如果有人可以提供帮助,我真的很感激。如果您提供解决方案,请提供解释,以便学习。
答案 0 :(得分:2)
试试这个正则表达式
^(?:[^;]{0,5};){1,4}(?:[^;]{0,5};?)?$
视觉解释https://regexper.com/#^%28%3F%3A[^%3B]{0%2C5}%3B%29{1%2C4}%28%3F%3A[^%3B]{0%2C5}%3B%3F%29%3F%24
^
我们匹配行的开头(?:)
是一个非捕获组(如()
,但不会将结果存储到组中)[^;]
我们匹配除了; {0,5}
抓0到5非;炭;
最后我们有一个决赛; {1,4}
我们匹配之前的模式模式,包括1到4次(;?
最后一个;是$
行尾答案 1 :(得分:0)
此正则表达式匹配所有这些规则
^([^;]{0,5};){0,4}[^;]{0,5};?$
([^;]{0,5};)
匹配任何一组字母或分号前的分号和分号本身,{0,4}
确保在最后一个字符[^;]{0,5}
之前不超过4个分号1}}匹配最后一个分号后的任何字符,;?
匹配1或没有分号作为最后一个字符,$
确保在最后一个分号后没有任何字符。
答案 2 :(得分:0)