регулярное выражение для проверки строки определенной длины - PullRequest
2 голосов
/ 21 марта 2010

Я пытаюсь написать регулярное выражение для сопоставления пар карт (AA, KK, QQ ... 22), и у меня есть регулярное выражение ([AKQJT2-9])\1.У меня проблема в том, что это регулярное выражение будет соответствовать AA, а также AAbc и т. Д. Есть ли способ написать регулярное выражение таким образом, чтобы я мог указать, что я хочу соответствовать ([AKQJT2-9])\1 и только это (то есть не более символов после).

Ответы [ 2 ]

5 голосов
/ 21 марта 2010

Заключите регулярное выражение в ^ и $:

^([AKQJT2-9])\1$

^ - это якорь "начало строки", а $ - это якорь "конец строки". Если ваш вариант регулярного выражения поддерживает это, \A и \Z могут быть еще лучшим выбором, поскольку ^ и $ могут также соответствовать началу / концу строки в многострочной строке, в зависимости от вашего механизма регулярных выражений и конфигурации.

3 голосов
/ 21 марта 2010

Ты имеешь в виду, как это?

^([AKQJT2-9])\1$

Это будет совпадать только если строка "AA", "KK",…

Если вы хотите захватить оба символа, но не остальную часть строки, вам придется использовать другую скобку

($match,$unused) = $string ~= (([AKQJT2-9])\2); # in perl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...