Преобразуйте \ n в <br />, но если оно не следует <h2> или [h2] - PullRequest
1 голос
/ 22 декабря 2011

Я хочу заменить \ n нав строке.Но не все так просто.Не должно быть или [/ h2] перед \n, если оно должно быть подвергнуто методу.

Например, поставитьмежду «Кое-что» и «Другое» в этом примере:

Something
Another thing

Но в этом примере ничего не делать:

<h2>Something</h2>
<p>Another thing</p>

Я придумаю (?<!\]|\>)\n, работающий на это .NET Regex Tester.Что-то для замены находится в первом примере, но не во втором, как ожидалось.Тем не менее, я не мог заставить это замечательное регулярное выражение работать так в моем C # -коде.Следующий код заменяет все \n независимо от того, следует ли он за </h2> или нет.

Cevrilen = Regex.Replace(Cevrilen, @"(?<!\]|\>)\n", "<br />");

Как можно заменить разрывы, только если за ними не следует тег </h2>?

Ответы [ 2 ]

1 голос
/ 22 декабря 2011
(?<!(?:<\/h2>|\[\/h2\]))\n

Это должно сделать это (используя отрицательный взгляд назад, чтобы дисквалифицировать </h2> или [/h2] перед \n)

0 голосов
/ 22 декабря 2011

Если ваш html соответствует xhtml, загрузите его как System.Xml.Linq.XDocument и не пытайтесь анализировать его с помощью Regex.Как говорили некоторые: «Даже Чак Норрис не может этого сделать».

...