Регулярное выражение для шестнадцатеричного числа?



Как создать регулярное выражение, которое обнаруживает шестнадцатеричные числа в тексте?



например, '0x0f4’, ‘0acdadecf822eeff32aca5830e438cb54aa722e3’, и '8BADF00D'.

709   9  

9 ответов:

Как насчет следующих?

0[xX][0-9a-fA-F]+

соответствует выражению, начинающемуся с 0, за которым следует либо нижний, либо верхний регистр x, а затем один или несколько символов в диапазонах 0-9, или a-f, или A-F

точный синтаксис зависит от ваших точных требований и языка программирования, но в основном:

/[0-9a-fA-F]+/

или просто i делает его нечувствительным к регистру.

/[0-9a-f]+/i

Если вам посчастливилось использовать Ruby, вы можете сделать:

/\h+/

EDIT - ответ Стивена Шредера заставил меня понять, что мое понимание 0x бит было неправильным, поэтому я обновил свои предложения соответственно. Если вы также хотите соответствовать 0x, эквиваленты являются

/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i

ДОБАВЛЕНО ЕЩЕ - если 0x должен быть необязательным (как следует из вопроса):

/(0x)?[0-9a-f]+/i

не большое дело, но большинство движков регулярных выражений поддерживают классы символов POSIX, и есть [:xdigit:] для сопоставления шестнадцатеричных символов, что проще, чем общий 0-9a-fA-F вещи.

Итак, регулярное выражение по запросу (т. е. с дополнительным 0x) составляет: /(0x)?[[:xdigit:]]+/

это будет соответствовать или без 0x префикс

(?:0[xX])?[0-9a-fA-F]+

стоит отметить, что обнаружение с MD5 (который является одним из примеров) может быть сделано с:

[0-9a-fA-F]{32}

Если вы используете Perl или PHP, вы можете заменить

[0-9a-fA-F]

С:

[[:xdigit:]]

просто для записи я бы указал следующее:

/^[xX]?[0-9a-fA-F]{6}$/

которая отличается тем, что он проверяет, что он и чтобы содержать шесть допустимых символов и в Нижнем или верхнем регистре x, если у нас есть один.

Если вы ищете определенный шестнадцатеричный символ в середине строки, вы можете использовать "\xhh", где hh-символ в шестнадцатеричном формате. Я пробовал и это работает. Я использую фреймворк для C++ Qt, но он может решать проблемы в других случаях, зависит от вкуса, который вам нужно использовать (php, javascript , python, golang и т. д.).

этот ответ был взят из:http://ult-tex.net/info/perl/

Это гарантирует, что у вас есть не более трех допустимых пар:

(([a-fA-F]|[0-9]){2}){3}

любые более или менее трех пар допустимых символов не совпадают.

Comments

    Ничего не найдено.