Можно ли сопоставить регулярное выражение с двоичными данными в .net? - PullRequest
1 голос
/ 09 октября 2010

Я знаю, что могу использовать регулярное выражение для сопоставления подстрок в строке, но возможно ли сопоставить некоторые шаблоны в двоичных данных с помощью регулярного выражения?Если это так, то в каком формате должны быть двоичные данные - двоичный массив, поток или что-то еще?

edit:

хорошо, чтобы объяснить, у меня есть двоичные данные, которые не должны иметь некоторые строки внутри, носами данные являются двоичными, поэтому мне нужно обнаружить этот шаблон данных, поэтому я помечаю эти данные как недействительные.
, но я не смог преобразовать эти двоичные данные в строку, поскольку они были бы недействительными.может быть, только для какого-нибудь символа [] или чего-то еще.

edit:

Теперь я думаю, может быть, преобразование двоичных данных в базовую кодировку (какие-либо подсказки, какая кодировка является самой базовой из доступных? Конечно, не unicode, я думаю, ascii?), А затемя буду использовать регулярное выражение.
, но вопрос в том, смогу ли я преобразовать любые двоичные данные в строку, используя эту кодировку, или я столкнусь с некоторыми случаями, которые будут недопустимыми и вызовут исключения при преобразовании двоичных данных в строку.

Ответы [ 4 ]

3 голосов
/ 09 октября 2010

Технический ответ на ваш вопрос: да , поскольку вы можете просто рассматривать двоичные данные как строку определенной кодировки, но я не верю, что это то, что вы спрашиваете.

Если вы спрашиваете, есть ли библиотека, предназначенная для сопоставления с образцом на массиве байтов, то система регулярных выражений .NET не сделает этого, и такой библиотеки, о которой я знаю, нет.

2 голосов
/ 09 октября 2010

Да, это возможно но зачем вам это?Конечно, сначала вам нужно будет закодировать данные в виде строки, но если вы собираетесь пойти на эту проблему, почему бы вам просто не десериализовать данные в более разумную структуру данных?

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

0 голосов
/ 20 февраля 2017

Perl способен сравнивать с чистыми двоичными данными.И я думаю, что это возможно с большинством других брендов.

Вы можете использовать сокращение «\ xNN» для поиска определенного байта в его шестнадцатеричной форме.Таким образом, возможны даже классы символов типа [[x20- \ xff].

0 голосов
/ 10 октября 2010

Я не пробовал этого, но держу пари, что вы можете преобразовать ваши двоичные данные в строку base64, а затем использовать регулярное выражение для поиска строки поиска - конечно, вам придется кодировать строку поиска в base64 как хорошо.

...