Хотя ответы, которые вы не можете проанализировать HTML с регулярными выражениями, верны, они не применяются здесь. OP просто хочет проанализировать один тег HTML с регулярными выражениями, и это то, что можно сделать с помощью регулярного выражения.
Предлагаемое регулярное выражение неверно:
<([a-z]+) *[^/]*?>
Если вы добавите что-то в регулярное выражение, путем обратного отслеживания его можно заставить сопоставить такие глупые вещи, как <a >>
, [^/]
слишком разрешительно. Также обратите внимание, что <space>*[^/]*
является избыточным, поскольку [^/]*
также может соответствовать пробелам.
Мое предложение было бы
<([a-z]+)[^>]*(?<!/)>
Где (?<! ... )
(в Perl-регулярных выражениях) отрицательный внешний вид. Он читает «a», затем слово, а затем все, что не является>, последнее из которых не может быть /, а затем> «.
Обратите внимание, что это позволяет такие вещи, как <a/ >
( как и исходное регулярное выражение), поэтому, если вы хотите что-то более ограничительное, вам нужно создать регулярное выражение для соответствия парам атрибутов, разделенных пробелами.
Как использовать классы, предоставляемые пространствами имен System.IO, System.Text.RegularExpressions из CommonSpace.
blockquote>Вы не можете: спецификация языка состоит в том, что операторы
using
имеют область действия, ограниченную единицей компиляции или телом пространства имен, в котором они объявлены. На практике это означает, что они никогда не видны за пределами файла, в котором находится объявление, а в случае вашегоCommonSpace
они находятся в фигурных скобках.Подробнее в спецификации языка C #
Для этого есть веская причина: если вы хотите узнать, какое пространство имен использует класс в фрагменте кода, это правильно там в файле. Не было бы конца проблем с конфликтами имен, если бы все директивы using из другого места просачивались в ваше пространство имен.
Если в вашем файле слишком много директив, использующих директивы, то ваш дизайн, вероятно, неправильный, вы должны разделить ваши классы на более мелкие единицы.