Попробуйте настроить sqlcommand и sqldatareader следующим образом:
Dim command As New SqlCommand("SELECT * FROM rescuers WHERE LastName='" & searchres.Text & "'", connection)
Dim reader As SqlDataReader = command.ExecuteReader()
Опубликуйте свой код для настройки SqlConnection.
Вы попросили его!:D
/&(?!(?:[a-zA-Z][a-zA-Z0-9]*|#\d+);)
(?!(?>(?:(?!<!\[CDATA\[|\]\]>).)*)\]\]>)/xm
Первая строка является Вашим исходным regex. Предвидение соответствует, если существует CDATA, закрывающий последовательность ( ]]>
) вперед, если нет вводная последовательность ( <!CDATA[
) между тут и там. Принятие документа минимально хорошо формируется, который должен означать, что текущая позиция в разделе CDATA.
Ой, у меня было это назад: при помощи положительного предвидения я соответствовал "явным" амперсандам только в разделах CDATA. Я изменил его на отрицательное предвидение, поэтому теперь это работает правильно.
Между прочим, этот regex работает в RegexBuddy в режиме Ruby, но не на rubular сайте. Я подозреваемый Rubular использую более старую версию Ruby с менее - мощная поддержка regex; кто-либо может подтвердить это? (Как Вы, возможно, предположили, я не Ruby программист.)
Править: Проблема в Rubular состояла в том, что я использовал' в качестве модификатора (для значения dot-matches-everything), но Ruby использует 'm' для этого.
Не используйте регулярные выражения для этого. Это - ужасная, ужасная идея. Вместо этого просто HTML кодирует что-либо, что Вы производите, который мог бы иметь символ в нем. Как это:
require 'cgi'
print CGI.escape("All of this is HTML encoded!")
Это работало! В Rubular я должен был изменить опции от /xs
кому: /m
(и я удалил пробел, который разделяет две части regex, когда Вы показали его выше).
Вы видите это регулярное выражение в действии наряду с демонстрационной строкой по http://www.rubular.com/regexes/5855.
В случае, если, что постоянная ссылка Rubular не является действительно постоянной, вот то, что я ввел для регулярного выражения:
/&(?!(?:[a-zA-Z][a-zA-Z0-9]*|#\d+);)(?!(?>(?:(?!<!\[CDATA\[|\]\]>).)*)\]\]>)/m
И вот тестовая строка:
<p>a & b</p>
<p>c & d</p>
<script type="text/javascript">
// <![CDATA[
if (a && b) doSomething('a & b & c');
// ]]>
</script>
<p>a & b</p>
<p>c & d</p>
Только два соответствия амперсандов - a & b
наверху и a & b
внизу. Амперсанды уже вышли как &
и все амперсанды (вышел или не) между <![CDATA[
и ]]>
оставлены в покое.
Так, мой заключительный код - теперь это:
html.gsub(/&(?!(?:[a-zA-Z][a-zA-Z0-9]*|#\d+);)(?!(?>(?:(?!<!\[CDATA\[|\]\]>).)*)\]\]>)/m, '&')
Большое спасибо Alan. Это точно, в чем я нуждался.
Я сделал что-то подобное здесь:
Лучший способ закодировать текстовые данные для XML
К счастью, в моем случае CDATA не был проблемой.
То, что является проблемой, - то, что необходимо быть осторожными, что выражение не является жадным, или Вы закончите с чем-то вроде этого:
.... <words> are < safe! >
Я серьезно сомневаюсь, что то, что Вы пытаетесь выполнить, является чем-то, что можно сделать использование одного только регулярного выражения. Regexps известно плохи при корректном вручении вложения.
Вы, вероятно, будете более обеспеченным использованием синтаксического анализатора XML и не выходом содержание CDATA.