【发布时间】:2026-02-09 06:30:01
【问题描述】:
假设我有一组字符 {abcd} 。 假设我有一个字符串序列。
aabb
ddccddcc
aaaa
bbbb
dddd
cdddcd
我想写一个正则表达式来匹配所有字符串,其中任何一个(并且只有一个)字符连续重复四次,我们匹配这个字符串。
例如,aaaa 为真。但是aabb不符合这个条件,好像它连续使用了集合中的一个字符,而不是同一个四个字符。此外,由于四个 d 由 c 字符分隔,因此 cdddcd 将不符合此标准。因此,我们必须排除使用 [abcd]{4} 。
虽然我可以做到以下几点:
a{4} { return A;}
b{4} { return B;}
c{4} { return C;}
d{4} { return D;}
但是,我想提高编写正则表达式的能力,并且我确信必须有一种方法使用表达一些逻辑来执行我希望使用更少语句的任务。谢谢阅读! :)
【问题讨论】:
-
如果
a{4}、b{4}、c{4}和d{4}应该分别返回A、B、C和D,如何将它们合并成即使有可能,单一模式也有帮助?您必须打开yytext[0]或其他东西 - 这几乎不会使代码更简单。
标签: regex flex-lexer