Глобальная функция замены RegEx для создания HTML из квадратных скобок [] - PullRequest
1 голос
/ 01 декабря 2011

У меня есть некоторый существующий код, который выглядит примерно так:

[tag:cb cbid="12345" cbwidth="200" cbclassname="calloutbox" cbposition="left"] Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[tag:cb cbid="123" cbwidth="200" cbclass="calloutbox2" cbposition="left"] Suspendisse eleifend enim a magna pretium porttitor.

Мне нужно написать глобальную функцию VB .Net, которая будет соответствовать этим [tag:cb], принять необязательные параметры и переписать строкуHTML теги.

<div id="12345" width="200" class="calloutbox" position="left">content (based on id)</div>

Любая помощь приветствуется.Спасибо.

1 Ответ

1 голос
/ 01 декабря 2011

Вот начало:

^\[tag:cb([^\]]*)\](.*)$

И затем вы используете группу 1 и 2 для создания новой строки:

<div$1>$2</div>

Это сгенерирует что-то вроде:

<div cbid="12345" cbwidth="200" cbclassname="calloutbox" cbposition="left"> Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
<div cbid="123" cbwidth="200" cbclass="calloutbox2" cbposition="left"> Suspendisse eleifend enim a magna pretium porttitor.</div>

Проблема в том, что у него все еще будут атрибуты типа cbid="123" вместо id="123". Желательно, чтобы вы выполнили его через другое регулярное выражение, чтобы заменить все вхождения cb([^=]*) и заменить на группу захвата 1.

Это выведет следующее:

<div id="12345" width="200" classname="calloutbox" position="left"> Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
<div id="123" width="200" class="calloutbox2" position="left"> Suspendisse eleifend enim a magna pretium porttitor.</div>

Все, что вам нужно сделать сейчас, это реализовать его в VB .Net:)

Здесь вы можете увидеть первую часть в действии: http://regexr.com? 2vbkq
, а вторую часть здесь: http://regexr.com? 2vbl3

...