gpt4 book ai didi

php - 用于确定字符串特定特征的正则表达式(即扑克牌)

转载 作者:可可西里 更新时间:2023-11-01 00:39:12 25 4
gpt4 key购买 nike

我有一个“AsKcQsJd”形式的字符串,代表一副扑克牌中的 4 张牌。大写值代表牌面值(在本例中为 Ace、King、Queen 和 Jack),小写值代表花色(在本例中为黑桃、梅花、黑桃、方 block )。

假设我有另一个值可以告诉我正在寻找什么套装。所以在这种情况下,我有:


$hand = 'AsKcQsJd';
$西装='s';

我如何编写一个正则表达式来检查手牌中是否有 A,然后是花色,所以在这种情况下是“As”以及任何其他有花色的牌?或者用“扑克术语”来说,我试图确定这手牌是否具有定义为 $suit 的花色的“A 高同花听牌”。

为了进一步说明,我需要检查是否存在以下两张卡片的任意组合:

AsKs, AsQs, AsJs, AsTs,As9s,As8s,As7s,As6s,As5s,As4s,As3s,As2s

由于增加了复杂性,这些牌可能出现在手中的任何地方。例如,字符串可以在前面有 As,在末尾有 Ks。这就是为什么我认为正则表达式是确定字符串中两者是否共存的最佳方法。

最佳答案

您可以使用两种前瞻,一种用于As,一种用于[^A]s,如下所示:

(?=.*As)(?=.*[^A]s)

https://regex101.com/r/8hkWTv/1

$suit = 's';
$re = '/(?=.*A' . $suit . ')(?=.*[^A]' . $suit . ')/';
print($re); // /(?=.*As)(?=.*[^A]s)/
print(preg_match($re, 'AsKcQsJd')); // 1
print(preg_match($re, 'AdKcQsJd')); // 0
print(preg_match($re, 'KsKcQsJd')); // 0

关于php - 用于确定字符串特定特征的正则表达式(即扑克牌),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51852757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com