Регулярное выражение для соответствия charset - PullRequest
3 голосов
/ 16 июня 2010

Я пытался создать регулярное выражение, соответствующее кодировке mime-сообщений, состоящих из нескольких частей, чтобы правильно их декодировать. Однако я обнаружил, что есть некоторые различия в формате, для которых я не могу разработать Regex, так как я не эксперт. в настоящее время я использую (?<=charset=).*(?=;), однако примеры, которые я нашел, отправляя электронные письма от разных клиентов:

Тип содержимого: текст / обычный текст; кодировка = ISO-8859-1; Формат = потекла

кодировки = US-ASCII;

Тип содержимого: текст / обычный текст; кодировка = изо-8859-1

Так что мой Regex работает с первыми двумя, но не с последними, однако, если я удаляю (?=;), тогда я также сопоставлю часть format=flowed, которую я не хочу.

Ответы [ 3 ]

5 голосов
/ 16 июня 2010

Вместо .* вы можете использовать [^;]*. То есть совпадать с чем угодно, кроме ;.

Итак, шаблон становится:

(?<=charset=)[^;]*

Ссылки

1 голос
/ 15 мая 2012

Опираясь на это, я обнаружил, что это ловит еще пару обстоятельств:

(?<=charset=)(([^;,\r\n]))*

Надеюсь, это поможет.

0 голосов
/ 16 июня 2010

Соответствует либо ;, либо концу строки ($).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...