【发布时间】:2014-07-15 08:51:16
【问题描述】:
我正在编写一个正则表达式来检查一个字符是否连续重复 5 次。如果字符重复 6 次,则必须存在第五个和第七个字符之间的允许字符。我可以为一个字符执行此操作,但无法连接多个字符的检查。我应该如何连接?
上面的解释:
YYYY-> 连续 5 次,所以这是真的
YYYYHY -> 6 次重复,允许字符在第 5 次和第 6 次重复之间,也是如此
我当前的正则表达式:
"(.*Y{4}(([LCDH]Y)|Y).*)" // this works fine in meeting the requirement above
"(.*Y{4}(([LCDH]Y)|Y).*)|(.*T{4}(([DM]T)|T).*)" // this does not work fine
对于第二个表达式,YYYYYYTTTTTQT 的情况,给我假(因为 TTTTTQT 是错误的)但我希望它给我真,因为 YYYYY 是正确的。
TTTTTQT 是错误的,因为在第五个和第六个 T 之间,只能存在 D 或 M。因此,虽然 TTTTT 是正确的,但在这之后和第六个 T 之前存在 Q 就错了。或者,TTTTTDT 或 TTTTTMT 是正确的。
如何确保在连接多个此类条件时,如果其中一个为真,我会得到 True?
【问题讨论】:
-
如果您一开始检查它是否重复 5 次,那么为什么不使用
Y{5}而不是{4}呢? -
请把你的要求说的更清楚些,难以理解。为什么
TTTTTQT错了? -
试试看,如果你这样做,你会得到一个错误的 YYYYY