Упрощение регулярных выражений Perl - PullRequest
2 голосов
/ 18 апреля 2011

Я хочу упростить следующее утверждение.

if($_=~/^([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/)

Есть ли альтернативный способ написать вышеприведенное утверждение без повторения [0-9a-fA-F] n раз?

Ответы [ 3 ]

10 голосов
/ 18 апреля 2011

Вы можете использовать Квантификаторы

{n} соответствует ровно n раз

if (/^([0-9a-fA-F]{5})/)

Аналогично, вы можете использовать класс символов POSIX

xdigit Любая шестнадцатеричная цифра ( "[0-9a-FA-F]").

if (/^([[:xdigit:]]{5})/)
5 голосов
/ 18 апреля 2011

Попробуйте это

if($_=~/^([0-9a-fA-F]{5})/)
0 голосов
/ 18 апреля 2011

или даже

if( /^([0-9a-fA-F]{5})/ )
...