Регулярное выражение для замены ссылок только их ярлыками - PullRequest
0 голосов
/ 13 февраля 2009

Я хочу преобразовать ссылку в определенный текст с помощью регулярного выражения. При связывании таблицы данных у меня есть функция, которая преобразует (смотрите: текст) в ссылку. Моя функция здесь.

Private Function Convertlook(ByVal str As String) As String

        Dim look As String
        Dim pattern As String = "\(look: ([a-z0-9$&.öışçğü\s]+)\)"
        Dim regex As New Regex(pattern, RegexOptions.IgnoreCase)
        Dim htmlanc As New System.Web.UI.HtmlControls.HtmlAnchor()
        Dim postbackRef As String = Page.GetPostBackEventReference(htmlanc, "$1")
        htmlanc.HRef = postbackRef
       str = regex.Replace(str, "(look: <a href=""javascript:" & htmlanc.HRef & """><font color=""#CC0000"">$1</font></a> )")      
        look = str
        Return look 

end function

Проблема в том, что я хочу отредактировать текст, как я могу обратить его обратно (посмотрите: текст)? Должен ли я снова использовать регулярное выражение и что может быть правильным регулярным выражением этого?

Ответы [ 3 ]

1 голос
/ 13 февраля 2009

Похоже, что регулярное выражение можно уменьшить до 'что-нибудь между угловыми скобками'

Dim regex As New Regex(".*>(.*)</font.*", RegexOptions.IgnoreCase)
str = regex.Replace(str, "(look: $1)")
0 голосов
/ 13 февраля 2009

Я изменил ваш код в C #, вот что вы хотите:

string str = "(look: trialText)";
string look = string.Empty;
string pattern = @"\(look: ([a-z0-9$&.öışçğü\s]+)\)";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
System.Web.UI.HtmlControls.HtmlAnchor htmlanc = new System.Web.UI.HtmlControls.HtmlAnchor();
string postbackRef = Page.GetPostBackEventReference(htmlanc, "$1");
htmlanc.HRef = postbackRef;

// Here I capture the text inside the anchor :
Match matchedText = regex.Match(str);
string textInsideLink = regex.Replace(matchedText.Value, "$1"); // textInsideLink = "trialText"

str = regex.Replace(str, "(look: <a href=\"javascript:" + htmlanc.HRef + "\"><font color=\"#CC0000\">$1</font></a> )");

// I replace captured text with another text :
str = Regex.Replace(str, "(" + textInsideLink + ")", "anotherTextInsideLink"); 
// str = "(look: <a href=\"javascript:__doPostBack('','anotherTextInsideLink')\"><font color=\"#CC0000\">anotherTextInsideLink</font></a> )"
0 голосов
/ 13 февраля 2009

Не проще ли сохранить как преобразованную, так и не преобразованную версию текста (т. Е. Во ViewState или ControlState)? Это избавит вас от многих проблем. Что произойдет, если ваш исходный текст содержит строку типа ?

Я предлагаю: не ходи туда, не стоит усилий. Следите за источником.

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