在另一个问题中,我学会了如何使用正则表达式计算直接扑克牌(这里).
现在,出于好奇,问题是:我可以使用正则表达式使用ASCII代码计算相同的东西吗?
就像是:
正则表达式:[C] [C + 1] [C + 2] [C + 3] [C + 4],是C的ASCII码(或者像这样)
比赛:45678,23456
不符合:45679或23459(不按顺序)
你的主要问题实际上是你没有使用ASCII连续编码,你使用的数字用于非面部卡,而非连续的,无序的角色用于面部卡.
您需要在字符串的开头检测2345A, 23456, 34567, ..., 6789T, 789TJ, 89TJQ, 9TJQK并且TJQKA.
这些都是不连续的ASCII码和,即使他们,你会碰到因为这两个问题A2345,并TJQKA是有效的,你不会得到A比较一致的字符集的其他字符均不大.
如果它必须由正则表达式完成,那么以下正则表达式段:
(2345A|23456|34567|45678|56789|6789T|789TJ|89TJQ|9TJQK|TJQKA)
Run Code Online (Sandbox Code Playgroud)
可能是最简单,最易读的.