您的位置:程序门 -> .net技术 -> c#



求一个关于ubb中url的正则表达式(c#)写法


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求一个关于ubb中url的正则表达式(c#)写法
发表于:2007-02-15 17:41:32 楼主
问题:

假设有一段文字如下:

http://www.csdn.net
[url]http://www.csdn.net[/url]
[url=http://www.csdn.net]csdn[/url]

问:如何用c#中的正则表达式使上面的文字转为以下形式:

<a   href= "http://www.csdn.net "> http://www.csdn.net </a>
<a   href= "http://www.csdn.net "> http://www.csdn.net </a>
<a   href= "http://www.csdn.net "> cdsn </a>

注意:不是一行一行的挨个转换出来哦,要一次性的转换出来,就是要可以提供一个函数类似:string   ubbparse(string   str){}
发表于:2007-02-15 17:55:401楼 得分:0
你去这里看看吧,正则的各个符号的规则,http://community.csdn.net/expert/topicview1.asp?id=5357558
你可以分开一两层来做,用groups来取值,想得到你的结果再用replace或是直接用字符相加就可以了。
发表于:2007-02-15 18:39:232楼 得分:0
现在的问题是我不知道如何能分开
http://www.csdn.net
[url]http://www.csdn.net[/url]
[url=http://www.csdn.net]csdn[/url]
这几个,比如,我替换http://www.csdn.net时,[url]http://www.csdn.net[/url]中的http://www.csdn.net也会被替换了。。。。
发表于:2007-02-15 23:03:573楼 得分:0
http://www.csdn.net
[url]http://www.csdn.net[/url]
http://www.csdn.net
[url=http://www.csdn.net]csdn[/url]
[url]http://www.csdn.net[/url][url]http://www.csdn.net[/url]

<a   href= "http://www.csdn.net "> http://www.csdn.net </a>
<a   href= "http://www.csdn.net "> http://www.csdn.net </a>
<a   href= "http://www.csdn.net "> http://www.csdn.net </a>
<a   href= "http://www.csdn.net "> csdn </a>
<a   href= "http://www.csdn.net "> http://www.csdn.net </a> <a   href= "http://www.csdn.net "> http://www.csdn.net </a>
----------------------------------------------------------
//逆向思维,先把[url../url]之中的连接处理掉,再回头处理之外的连接
//你可以把每一步的结果打印处理就知道我的思路了
//参考如下代码
string   s   =
        @ "http://www.csdn.net "   +   "\r\n "   +
        @ "[url]http://www.csdn.net[/url] "   +   "\r\n "   +
        @ "http://www.csdn.net "   +   "\r\n "   +
        @ "[url=http://www.csdn.net]csdn[/url] "   +   "\r\n "   +
        @ "[url]http://www.csdn.net[/url][url]http://www.csdn.net[/url] "   +   "\r\n ";

s   =   regex.replace(s,   @ "\[url\](http://[^\[]*)\[\/url\] ",   "[url=$1]$1[/url] ");
s   =   regex.replace(s,   @ "\[url=http://([^\[]*)] ",   "[url=\u0001$1] ");
s   =   regex.replace(s,   @ "([url=[^\]]*])http://([^\[]*\[\/url\]) ",   "$1\u0001$2 ");
s   =   regex.replace(s,   @ "([\s]*)(http://[\s]+) ",   "$1[url=$2]$2[/url] ");
s   =   regex.replace(s,   @ "\[url=([^\]]*)\] ",   @ " <a   href= " "$1 " "> ");
s   =   s.replace( "[/url] ",   " </a> ");
s   =   s.replace( "\u0001 ",   "http:// ");
textbox1.text   =   s;


快速检索

最新资讯
热门点击