正则表达式任何字符,只要字符相同

时间:2019-02-21 21:36:47

标签: regex

我在卡组中有一个表示卡的字符串,即7c9hQsKsAs

是否可以使用Regex指定。* x。* x。* x。* x。* x,其中x可以指定任何字符(c / h / d / s),只要该字符是相同字符始终?这将用于确定是否有冲洗。

这将用于确定给定的纸牌是否构成特定的扑克手。我考虑过按值和西服排序,但是我仍然需要指定所有西服字符都相同(即按值和西服排序的TcJcQcKcAd将是同花顺)。

1 个答案:

答案 0 :(得分:1)

这取决于您使用的正则表达式的风格,但是如果它支持反向引用,则可以:

.*(\w).*\1.*\1.*\1.*\1.*

匹配...

123c234c345c456c567c678

以“ c”作为第一个参考。 \1说要匹配第一个被捕获的组

演示:https://regex101.com/r/Ia9Zg0/1

即使给定整个表达式,每个字符(1、2、3、4、5、6、7、8和c),捕获的组也只匹配“ c”,因为它是唯一重复5次的组。

您可能想要更具体的内容,例如:

.+([chds]).+\1.+\1.+\1.+\1

这使用 + (1个或更多)而不是 * (0个或更多),因为您需要要求每个西装字符之前的排名(值)字符。 *(0或更大)将使其可选。

演示:https://regex101.com/r/VKbmnR/1/

帮助:https://www.regular-expressions.info/backref.html