Регулярное выражение и повторяющиеся классы символов в Perl - PullRequest
6 голосов
/ 01 июля 2011

Я пытаюсь написать регулярное выражение, которое может извлечь (возможно, несколько) строк из четырех шестнадцатеричных чисел / букв.

Я мог бы сделать что-то вроде этого: /^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]/

, ноесть лучший способ?

Похоже, что оператор повтора:

a {n} Соответствует 'a', повторенному ровно n раз.

a {n,} Соответствует 'a'повторяется n или более раз.

a {n, m} Совпадения 'a' повторяются между n и m раз включительно.

Работало бы, но следующее регулярное выражение, похоже, не работает:

/^[A-Fa-f0-9]{4}+/

Я пытаюсь сопоставить строки типа:

AA00

AA00FFAA

0011FFAA0022

и так далее.Каждая строка будет в отдельной строке.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 01 июля 2011

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

/^(?:[A-Fa-f0-9]{4})+$/
1 голос
/ 01 июля 2011

У вас есть вложенные квантификаторы в регулярных выражениях;то есть {4} означает совпадение точно 4 раза и + означает совпадение этой строки много раз, поэтому эти два квантификатора конфликтуют.Если вы просто удалите + , он будет работать:

/^[A-Fa-f0-9]{4}/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...