Регулярное выражение для преобразования подстроки в ссылку - PullRequest
1 голос
/ 16 ноября 2008

Мне нужно регулярное выражение для преобразования строки в ссылку. Я что-то написал, но это не работает в asp.net.i, я не могу решить, и я новичок в регулярном выражении. : show.aspx? td = string)

Dim pattern As String = "<bkz[a-z0-9$-$&-&.-.ö-öı-ış-şç-çğ-ğü-ü\s]+)>"
Dim regex As New Regex(pattern, RegexOptions.IgnoreCase)
str = regex.Replace(str, "<a href=""show.aspx?td=$1""><font color=""#CC0000"">$1</font></a>")

Ответы [ 3 ]

3 голосов
/ 16 ноября 2008

Общие замечания по вашему коду: помимо отсутствия открывающих скобок вы делаете лишние вещи: $ - $ не является неправильным, но может быть упрощено только до $. То же самое для акцентированных символов.
Все скажут вам, что тег шрифта устарел даже в простом HTML: span span с атрибутом style.

А из вашего вопроса и примера в ответе, я думаю, что выражение может выглядеть примерно так:

\(bkz: ([a-z0-9$&.öışçğü\s]+)\)

строка замены будет выглядеть так:

(bkz: <a href=""show.aspx?td=$1""><span style=""color: #C00"">$1</span></a>)

НО первые $ 1 должны быть фактически закодированы в URL.

0 голосов
/ 16 ноября 2008

Спасибо Vonc, теперь это не вызывает ошибку, но также, когда я назначаю str для Label.Text, я тоже не вижу ссылку. *

<span id="Label1">(bkz: <a href="http://www.mysite.com?t=here">here</a>)</span>

Но теперь, это в источнике представления;

<span id="Label1">(bkz: here)</span>
0 голосов
/ 16 ноября 2008

Ваше регулярное выражение в беде из-за ')' без '('

Будет:

&lt;bkz:\s+((?:.(?!&gt;))+?.)&gt;

лучше работать?

Первая группа будет захватывать то, что вы после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...