我的字符串始终采用以下格式:
"AB AB AB AB AB " // (note the trailing space)
其中A
可以是"12345678TJQKA"
中的任何字符,而B
可以是"HSCD"
中的任何字符(基本上是52张扑克牌)。
如何判断此字符串是否为带有正则表达式的皇家同花顺?
我试过没有结果的一些事情(现在只使用钻石)(注意:我不知道如何正确使用前瞻,后视和环顾四周,所以我很可能做某事< / s>一切都错了..)
^(?=AD )(?=KD )(?=QD )(?=JD )TD $
^(?=AD .*)(?=KD .*)(?=QD .*)(?=JD .*)TD .*$
^(?=AD )(?=KD )(?=QD )(?=JD )(?=TD )$
^(?=AD .*)(?=KD .*)(?=QD .*)(?=JD .*)(?=TD .*)$
^(?<=AD )(?<=KD )(?<=QD )(?<=JD )(?<=TD )$
所以我希望正则表达式以任意顺序匹配"AD KD QD JD TD "
(因此包括例如其反转("TD JD QD KD AD "
)或以此随机顺序:"KD TD QD AD JD "
)。最好还有一个D
的捕获组,所以它对所有四件套装都是统一的..
Here is an online regex tester with some test cases in case anyone want to fuddle around.
如果你的正则表达式不仅适用于Diamond Royal Flush,而且适用于同时适用于所有套装(解释它如何工作),那将更好。 (检查皇家同花顺而不是正则表达式的任何其他方法也很好,但我仍然想知道如何在正则表达式中完成此操作,因为这是我的问题主要是关于。)
答案 0 :(得分:2)
您可以使用正则表达式来检查这一点,但这可能不是最好的方法。
我的回答是假设所有字符串都是正确的条目(给定格式的5张卡片)。
然后我们可以使用
QObject::connect(titleLabel, &QPushButton::clicked, [this]
{
toggleButton->click();
});
检查是否是皇家同花顺。我们使用一堆前瞻来检查所需的卡片,并在第一次尝试时匹配使用过的套装并使用反向引用将其破坏。我们可以简单地使用^(?=.*J(\w))(?=.*Q\1)(?=.*T\1)(?=.*K\1)(?=.*A\1).*$
来检查套装,因为卡片类型和套装的标识符不会重叠(甚至\w
应该是可能的)