Как написать пространство имен, которое предоставляет общие пространства имен для избежания многократного использования операторов в C # .NET

Хотя ответы, которые вы не можете проанализировать HTML с регулярными выражениями, верны, они не применяются здесь. OP просто хочет проанализировать один тег HTML с регулярными выражениями, и это то, что можно сделать с помощью регулярного выражения.

Предлагаемое регулярное выражение неверно:

<([a-z]+) *[^/]*?>

Если вы добавите что-то в регулярное выражение, путем обратного отслеживания его можно заставить сопоставить такие глупые вещи, как <a >>, [^/] слишком разрешительно. Также обратите внимание, что <space>*[^/]* является избыточным, поскольку [^/]* также может соответствовать пробелам.

Мое предложение было бы

<([a-z]+)[^>]*(?<!/)>

Где (?<! ... ) (в Perl-регулярных выражениях) отрицательный внешний вид. Он читает «a», затем слово, а затем все, что не является>, последнее из которых не может быть /, а затем> «.

Обратите внимание, что это позволяет такие вещи, как <a/ > ( как и исходное регулярное выражение), поэтому, если вы хотите что-то более ограничительное, вам нужно создать регулярное выражение для соответствия парам атрибутов, разделенных пробелами.

0
задан Chaitra Dangat 18 March 2019 в 01:35
поделиться

1 ответ

Как использовать классы, предоставляемые пространствами имен System.IO, System.Text.RegularExpressions из CommonSpace.

Вы не можете: спецификация языка состоит в том, что операторы using имеют область действия, ограниченную единицей компиляции или телом пространства имен, в котором они объявлены. На практике это означает, что они никогда не видны за пределами файла, в котором находится объявление, а в случае вашего CommonSpace они находятся в фигурных скобках.

Подробнее в спецификации языка C #

Для этого есть веская причина: если вы хотите узнать, какое пространство имен использует класс в фрагменте кода, это правильно там в файле. Не было бы конца проблем с конфликтами имен, если бы все директивы using из другого места просачивались в ваше пространство имен.

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

0
ответ дан iakobski 18 March 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: