C # регулярное выражение заменить - PullRequest
1 голос
/ 27 июля 2010

У меня есть база данных, содержащая ojects Page с html-содержимым.Многие строки в БД содержат это содержимое

  <p style="float: left; margin-right: 20px; height: 300px;">
        <img src="...">More html ...
 </p>

Поэтому я создал супер простую замену регулярных выражений:

 foreach (var page in db.Pages)
                {
                    string pattern = @"<p style=""float: left; margin-right: 20px;"">(.*)</p>/ms";
                    if( Regex.Match(page.Content, pattern).Success)
                    {
                        page.Content = Regex.Replace(page.Content, pattern, "<div class=\"contentimage\" >$1</div>");
                    }
                }
//                db.SubmitChanges();

Хотя при запуске регулярных выражений в инструменте тестирования регулярных выражений,оно работает.но в коде C # это не так.Может кто-нибудь помочь мне, пожалуйста.

Если кто-нибудь знает, как сделать обновление с заменой регулярного выражения в sql, это было бы хорошо.

Регулярное выражение не моя сильная сторона (хотя иотличный позор).Но это в моем списке вещей, чтобы узнать как можно скорее;)

1 Ответ

3 голосов
/ 27 июля 2010

Ваша проблема "/ мс". Вы пытаетесь указать пару флагов регулярных выражений, но C # определяет флаги не так, как php / perl (ваш тестер регулярных выражений, вероятно, проверяет регулярные выражения, предназначенные для этих языков. Я предлагаю Expresso (это бесплатно) для работы с. NET регулярные выражения). Измените свой шаблон на это:

string pattern = @"<p style=""float: left; margin-right: 20px; height: 300px;"">(.*)</p>";

(также обратите внимание, что я добавил атрибут "height", чтобы он совпадал - это просто опечатка?)

И твое регулярное выражение для этого:

if( Regex.Match(page.Content, pattern,RegexOptions.Multiline | RegexOptions.Singleline).Success)

И это должно работать.

[EDIT] Да, и исправление метода замены:

page.Content = Regex.Replace(page.Content, pattern, "<div class=\"contentimage\" >$1</div>", RegexOptions.Multiline | RegexOptions.Singleline);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...