Regex 拒绝lex中的重复字符

Regex 拒绝lex中的重复字符,regex,character,lex,flex-lexer,Regex,Character,Lex,Flex Lexer,我需要为flex程序编写一个正则表达式,其中它会发现重复的字符并拒绝它们,例如,它批准ABD,但不批准ABDA或AABD,因为表达式中重复了“a”。这让我头痛了一个星期,提前谢谢你抽出时间 匹配任何字符,后跟括号中相同的匹配项:/()\1/ 编辑:这只匹配连续的字母。对所有匹配项使用/(.).*\1/。如果不区分大小写: .*(A.*A|B.*B|C.*C|D.*D|E.*E|F.*F|G.*G|H.*H|I.*I|J.*J|L.*L|M.*M|N.*N|O.*O|P.*P|Q.*Q|R.*R|

我需要为flex程序编写一个正则表达式,其中它会发现重复的字符并拒绝它们,例如,它批准ABD,但不批准ABDA或AABD,因为表达式中重复了“a”。这让我头痛了一个星期,提前谢谢你抽出时间

匹配任何字符,后跟括号中相同的匹配项:
/()\1/


编辑:这只匹配连续的字母。对所有匹配项使用
/(.).*\1/

如果不区分大小写:

.*(A.*A|B.*B|C.*C|D.*D|E.*E|F.*F|G.*G|H.*H|I.*I|J.*J|L.*L|M.*M|N.*N|O.*O|P.*P|Q.*Q|R.*R|S.*S|T.*T|U.*U|V.*V|X.*X|Y.*Y|W.*W|Z.*Z).*

谢谢你的回复,谢谢你的回复,但不幸的是它不工作,它只发现连续字符,不工作,只发现连续字符,不工作,只发现连续字符,比如说你的回复。谢谢你的回复,但不幸的是你的回复,但不幸的是它不工作,它只发现连续字符,不工作,它只发现连续字符,例如Aaggd被拒绝,Aaggd被拒绝,但AGDA批准(我不想)AGDA批准(我不想)
(A.*A.AA*A A A A A A a124bB B*B*B*B*B C C C C C C124;C C C124;C C124;C C124;C124;C124;C124;C C C C124;D*D*D*D*D*D*D*D*D。D。D。D。D。D。D124;D。D。D。D124;D124;D。D尝试在所有字母之间放置一个
*
。哇!它起作用了!非常感谢你!!但是,出现了另一个问题(我没有提到它的错误),如果它同意某个单词,我如何让它打印消息?为了使它更简单,我写[ABCDEFGHIJKLMNOPQRSTUVXYZ]+printf(“消息”);根据这一点,*(A.*A | B.*B | C.*C | D.*E | E | F.*F | GG | HH | II | JJ | LL | MM | NN OO PP | QQ | RR SS | TT | UU | VV |X‌​X | YY | WW | ZZ)。*printf(“消息”);但它没有“看到”第一条改进规则:/ok,我的坏,忽略我之前的回答,我找到了,我只是改变了表达顺序,先是EdgardLeal的,然后是我的。再次感谢您抽出时间。最后一件事是,有人能给我解释一下上面的代码是如何工作的吗?我对所有的*和。
只表示一次任何字符感到困惑,当与
*
一起使用时,
*
表示该字符可能出现多次或从未出现过<代码>*(A.*A)。*
任何事情很多或从来没有,字母A,任何事情,很多次或从来没有,字母A再次出现,任何事情很多次或从来没有出现过OK,所以我写了这样的东西???-->/()\1/printf(“%s:已拒绝”,yytext);这在flex或lex中是无效的语法:我将您的标记更改为“gnu flex”,因为“flex”标记用于Apache flex框架。