Это Perl бинарное регулярное выражение найдено в http://www.w3.org/International/questions/qa-forms-utf-8.en.php соответствует UTF-8 документов без заголовка спецификации UTF-8:Как преобразовать сложное двоичное регулярное выражение Perl в C# или PowerShell?
$field =~
m/\A(
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*\z/x;
мне это нужно, потому что я работаю на PowerShell equivalent to 'grep -I', и часть этого включает в себя обнаружение кодировки текста.
Но как переписать это на C# или PowerShell? Или, другими словами, в синтаксисе «.Net Regex»?
EDIT: Обнаружили это http://social.msdn.microsoft.com/Forums/en-US/regexp/thread/6a81be63-e6da-4156-a5bf-8b9782a1ac40 вопрос о том же Regex из всех вещей. Короткий ответ кажется, что это невозможно сделать с .Net, поскольку .Net не поддерживает двоичные регулярные выражения.
Это очень простое регулярное выражение. Не могли бы вы объяснить, какая конкретная проблема у вас есть? –