Необязательные параметры являются атрибутом параметра метода или делегата. Когда вы вызываете подпись (метод или делегат), у которой есть известный необязательный параметр во время компиляции, компилятор вставляет необязательное значение параметра в callsite.
Время выполнения не известно о дополнительных параметрах, поэтому вы не можете сделать делегата, который вставляет необязательный параметр, когда он вызывается.
Вместо этого вам нужно объявить пользовательский тип делегата с дополнительным параметром:
public delegate void MyDelegate(IEnumerable<string> param1, string param2, int param3 = 1);
При вызове этот делегат, вы сможете опустить третий параметр, независимо от объявления содержащегося в нем метода (ов).
Да, это позволяется (Блок проверки допустимости W3C принимает его, только выдает предупреждение).
Незавершенный <
и >
также позволяются внутренние комментарии, таким образом, такой простой regexp можно дурачить.
Если BeautifulSoup не обрабатывает это, это могла бы быть ошибка или возможно сознательное проектное решение сделать это более эластичным пропавшим без вести заключительных кавычек в атрибутах.
Я полагаю, что это допустимо, и блок проверки допустимости W3C соглашается, но авторитетный источник для этой информации является стандартом ISO 8879:1986, который стоит ~150EUR/210USD. Независимо, не неправильно закодировать их, поэтому если в сомнении, закодировать. Кроме того, при использовании основанного на XML типа документа необходимо закодировать больше - чем входит в систему последовательность ]]>
.
Литерал >
законно везде в содержимом HTML, и в значениях атрибута и как текст в элементе.
После чтения следующего:
http://www.w3.org/International/questions/qa-escapes
похоже, что Escape объекта предлагаются везде (включая в атрибутах) для <> и и
yeah except /<tag[^>]*>.*?<\/tag>/
Не будет соответствовать единственному тегу, но соответствовать первому начинать-тегу и последнему конечному тэгу для данного тега. Точно так же, как Ваше первое нежадное соответствие тега Ваш промежуток должен быть записан нежадный также.
посмотрите, получаете ли Вы тот же результат с помощью > вместо>
Если Вы настаиваете на том, чтобы использовать регулярные выражения (который подходит для основных строковых операций), пытаются использовать <tag((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)>.*?<\/tag>
. Это должно соответствовать атрибутам отлично и поэтому разрешению Вам получить доступ к внутреннему содержанию (хотя необходимо поместить его в группу получения).
Можно также использовать Пакет Гибкости HTML для парсинга HTML, который я рекомендовал бы, если Вы собираетесь сделать большой парсинг. Поддержание больших регулярных выражений может легко стать головной болью, но в это время они являются также намного более эффективными, если Вы можете сделать так.