gpt4 book ai didi

java - 用于匹配扑克牌的正则表达式 (Java)

转载 作者:行者123 更新时间:2023-11-30 07:57:03 25 4
gpt4 key购买 nike

这里是正则表达式新手。

我需要一个匹配特定扑克手牌的正则表达式(满屋 - 一手扑克牌,包含一个级别的三张牌和另一个级别的两张牌)它应该将其识别为任意顺序的满屋子,并且所有牌组 (23456789TJQKA) 和花色 (SHDC)

我什至不确定正则表达式是否是正确的工具,所以如果您认为我应该做其他事情请告诉我 :)

一个示例字符串可能看起来像

"KD KC AH AC AD"

(King of Diamonds, King of Clubs, Ace of Hearts, Ace of Clubs, Ace of Diamonds)

我想出了这个丑陋的正则表达式

(?=.*(([2-9TJQKA])[SHDC]).*\2[SHDC].*\2[SHDC])(?=.*(?!\2)(([2-9TJQKA])[SHDC]).*\4[SHDC].*\4[SHDC]).*

但它似乎并没有完成这项工作。

最佳答案

这应该匹配 'full houses':(编辑:实际上只是你原来的正则表达式被修复以忽略花色)

(?=.*([2-9TJQKA])[SHDC].*\1[SHDC].*\1[SHDC])(?=.*((?!\1)[2-9TJQKA])[SHDC].*\2[SHDC])

它首先查找“3”序列。第二个 lookahead 正在寻找“2”序列,其中包含一个负 lookahead 以防止重复匹配。正则表达式完全由两个先行组成,这防止了如果我们实际匹配(并将指针向前移动)任何字符时会出现的问题 - 这两个子模式都可以自由匹配字符串中的任何位置。

online demo here

关于java - 用于匹配扑克牌的正则表达式 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41597792/

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