27 个解决方案
#1
首先获取发帖的内容 然后通过正则取出连接 这个去GOOGLE搜一下最详细不过了!
#2
用正则提取!!
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
#3
用正则表达式 http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
也可以用UBB [u r l = http://] [ /u r l ]
也可以用UBB [u r l = http://] [ /u r l ]
#4
在cs里我怎么写?刚才试试怎么不行啊?
Regex regex2 = new Regex("(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])? ");
string c = txtcontent.Text;
string con = regex2.Match(c).ToString();
这样怎么不行啊?取到的为空
Regex regex2 = new Regex("(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])? ");
string c = txtcontent.Text;
string con = regex2.Match(c).ToString();
这样怎么不行啊?取到的为空
#5
要取什么样的网址,有什么规律,给下你的源字符串看下
#6
就是百度也不行啊,什么样的都没
#7
string strPattern=@"a[\s]+href=(? <Link>[^\s>]+)[^>]*>(? <Text>[^ <]*) </a>";
MatchCollection Matches=Regex.Matches("",strPattern,RegexOptions.IgnoreCase|RegexOptions.Compiled);
foreach(Match mc in Matches)
{
Console.Write(mc.Groups["Link"].Value.ToString().Trim());
}
#8
对,用正则取出来!其它的方法应该不行。
#9
这个什么都不匹配啊,我晕,你们做个成功的我看看
#10
楼主,这样试了吗?或者是少了一个正则表达式的命名空间吧,呵呵 .
#11
我写了啊
引用的是using System.Text.RegularExpressions;
不对吗?
引用的是using System.Text.RegularExpressions;
不对吗?
#12
路过的,顺便过来看看。
#13
关注。
#14
除了不会提问,我不知道该说楼主什么
自己在那着急有什么用呢,问题描述不清楚,谁也没办法给你解决的
把问题描述清楚,不要想当然的以为谁都清楚你想要些什么,否则也不会有那么多不可用的答案了
你要获取的字符串的规律是什么,你的源字符串是什么样的,说不清楚就给出实例,如果给实例记着一定要给出对应的结果
自己在那着急有什么用呢,问题描述不清楚,谁也没办法给你解决的
把问题描述清楚,不要想当然的以为谁都清楚你想要些什么,否则也不会有那么多不可用的答案了
你要获取的字符串的规律是什么,你的源字符串是什么样的,说不清楚就给出实例,如果给实例记着一定要给出对应的结果
#15
1)文本過濾法
2)正測表達式法
3)DOM/SAX節點法
5)XPath
5)XSLT
以上四法可以组合使用
推薦方案:
1)XPath组合正则表达式最佳
XPath确定范围,Regex精確提取
2)XSLT
XSLT主體還是XPath,有幾百個內置函數可用。
3)使用SGML解析器SgmlReader
一個輕型的解析器,能夠自動處理不規範的HTML代碼
2)正測表達式法
3)DOM/SAX節點法
5)XPath
5)XSLT
以上四法可以组合使用
推薦方案:
1)XPath组合正则表达式最佳
XPath确定范围,Regex精確提取
2)XSLT
XSLT主體還是XPath,有幾百個內置函數可用。
3)使用SGML解析器SgmlReader
一個輕型的解析器,能夠自動處理不規範的HTML代碼
#16
我说的是所有的网址,只要你能上的去网站,看到的地址就可以
#17
能举个例子不?
#18
Regex regex = new Regex("((http|ftp|https|):\\/\\/)?[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?");
string con = regex.Match(rCon).ToString();
我这个可以获取完整的,但是如果这个网址后面连着汉字,也就获取到了,我怎么着才能把后面的汉子不获取到?
string con = regex.Match(rCon).ToString();
我这个可以获取完整的,但是如果这个网址后面连着汉字,也就获取到了,我怎么着才能把后面的汉子不获取到?
#19
你的源字符串是什么样的?还是给实例吧,再没有实例就当我路过好了
#20
sdfsdfhttp://www.tudou.com/home/09jazzs时刻冬季恋歌,源啊,这有什么用啊,随便输就有来啊
#21
说实在的,这种需求如果不给出实例,能写出来那真就是神了
但以楼主这种需求,就要求网址一定是http://或https://开头了,否则是没办法判断从哪开始取的
string test = "sdfsdfhttp://www.tudou.com/home/09jazzs时刻冬季恋歌,源啊,这有什么用啊,随便输就有来啊";
Regex reg = new Regex(@"https?://(?:[\w-]+\.)+[\w-]+(?:/[\w- ./?%&=]*)?", RegexOptions.ECMAScript);
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
但以楼主这种需求,就要求网址一定是http://或https://开头了,否则是没办法判断从哪开始取的
#22
我以WWW开头不行吗?为什么没办法判断从哪?
#23
HtmlParser.HtmlWeb hw = new HtmlParser.HtmlWeb();
HtmlParser.HtmlDocument hd = new HtmlParser.HtmlDocument();
hd.DeclaredEncoding = System.Text.Encoding.Default;
hd.LoadHtml(this.txtSource.Text);
HtmlParser.HtmlNodeCollection hnc = hd.DocumentNode.SelectNodes(this.txtXpath.Text);
if (hnc == null)
{
this.txtResult.Text = "未匹配到任何数据";
return;
}
StringBuilder sb = new StringBuilder();
sb.Append(hnc.Count).Append("个\r\n");
foreach (HtmlParser.HtmlNode hn in hnc)
{
string text = hn.InnerHtml;
sb.Append(text).Append("\r\n");
}
this.txtResult.Text = sb.ToString();
#24
以哪些特定字符子串开头,这就是规则,楼主有描述清楚吗?规则不确定,问题没法解决
说句不太中听的话,没有人是你肚子里的蛔虫,所以如果你自己不把问题描述清楚,是没有人能解决你的问题的
提问也是一门学问,你的需求描述越清晰,就越有利于你的问题快速解决
好吧,废话说了一大堆,21楼的代码,还有哪些需求不满足,给出实例,要完整的源字符串,而不仅仅是结果
说句不太中听的话,没有人是你肚子里的蛔虫,所以如果你自己不把问题描述清楚,是没有人能解决你的问题的
提问也是一门学问,你的需求描述越清晰,就越有利于你的问题快速解决
好吧,废话说了一大堆,21楼的代码,还有哪些需求不满足,给出实例,要完整的源字符串,而不仅仅是结果
#25
还是上面的源字符串,只是把网址换成www.baidu.com就可以来,怎么做那?
#26
那就这样试下,看看是否满足你所有的需求吧
string test = "sdfsdfwww.baidu.com时刻冬季恋歌,源啊,这有什么用啊,随便输就有来啊";
Regex reg = new Regex(@"(?:https?://|www\.)(?:[\w-]+\.)+[\w-]+(?:/[\w- ./?%&=]*)?", RegexOptions.ECMAScript);
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
#27
多谢了啊,忙来好久了,
#1
首先获取发帖的内容 然后通过正则取出连接 这个去GOOGLE搜一下最详细不过了!
#2
用正则提取!!
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
#3
用正则表达式 http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
也可以用UBB [u r l = http://] [ /u r l ]
也可以用UBB [u r l = http://] [ /u r l ]
#4
在cs里我怎么写?刚才试试怎么不行啊?
Regex regex2 = new Regex("(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])? ");
string c = txtcontent.Text;
string con = regex2.Match(c).ToString();
这样怎么不行啊?取到的为空
Regex regex2 = new Regex("(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])? ");
string c = txtcontent.Text;
string con = regex2.Match(c).ToString();
这样怎么不行啊?取到的为空
#5
要取什么样的网址,有什么规律,给下你的源字符串看下
#6
就是百度也不行啊,什么样的都没
#7
string strPattern=@"a[\s]+href=(? <Link>[^\s>]+)[^>]*>(? <Text>[^ <]*) </a>";
MatchCollection Matches=Regex.Matches("",strPattern,RegexOptions.IgnoreCase|RegexOptions.Compiled);
foreach(Match mc in Matches)
{
Console.Write(mc.Groups["Link"].Value.ToString().Trim());
}
#8
对,用正则取出来!其它的方法应该不行。
#9
这个什么都不匹配啊,我晕,你们做个成功的我看看
#10
楼主,这样试了吗?或者是少了一个正则表达式的命名空间吧,呵呵 .
#11
我写了啊
引用的是using System.Text.RegularExpressions;
不对吗?
引用的是using System.Text.RegularExpressions;
不对吗?
#12
路过的,顺便过来看看。
#13
关注。
#14
除了不会提问,我不知道该说楼主什么
自己在那着急有什么用呢,问题描述不清楚,谁也没办法给你解决的
把问题描述清楚,不要想当然的以为谁都清楚你想要些什么,否则也不会有那么多不可用的答案了
你要获取的字符串的规律是什么,你的源字符串是什么样的,说不清楚就给出实例,如果给实例记着一定要给出对应的结果
自己在那着急有什么用呢,问题描述不清楚,谁也没办法给你解决的
把问题描述清楚,不要想当然的以为谁都清楚你想要些什么,否则也不会有那么多不可用的答案了
你要获取的字符串的规律是什么,你的源字符串是什么样的,说不清楚就给出实例,如果给实例记着一定要给出对应的结果
#15
1)文本過濾法
2)正測表達式法
3)DOM/SAX節點法
5)XPath
5)XSLT
以上四法可以组合使用
推薦方案:
1)XPath组合正则表达式最佳
XPath确定范围,Regex精確提取
2)XSLT
XSLT主體還是XPath,有幾百個內置函數可用。
3)使用SGML解析器SgmlReader
一個輕型的解析器,能夠自動處理不規範的HTML代碼
2)正測表達式法
3)DOM/SAX節點法
5)XPath
5)XSLT
以上四法可以组合使用
推薦方案:
1)XPath组合正则表达式最佳
XPath确定范围,Regex精確提取
2)XSLT
XSLT主體還是XPath,有幾百個內置函數可用。
3)使用SGML解析器SgmlReader
一個輕型的解析器,能夠自動處理不規範的HTML代碼
#16
我说的是所有的网址,只要你能上的去网站,看到的地址就可以
#17
能举个例子不?
#18
Regex regex = new Regex("((http|ftp|https|):\\/\\/)?[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?");
string con = regex.Match(rCon).ToString();
我这个可以获取完整的,但是如果这个网址后面连着汉字,也就获取到了,我怎么着才能把后面的汉子不获取到?
string con = regex.Match(rCon).ToString();
我这个可以获取完整的,但是如果这个网址后面连着汉字,也就获取到了,我怎么着才能把后面的汉子不获取到?
#19
你的源字符串是什么样的?还是给实例吧,再没有实例就当我路过好了
#20
sdfsdfhttp://www.tudou.com/home/09jazzs时刻冬季恋歌,源啊,这有什么用啊,随便输就有来啊
#21
说实在的,这种需求如果不给出实例,能写出来那真就是神了
但以楼主这种需求,就要求网址一定是http://或https://开头了,否则是没办法判断从哪开始取的
string test = "sdfsdfhttp://www.tudou.com/home/09jazzs时刻冬季恋歌,源啊,这有什么用啊,随便输就有来啊";
Regex reg = new Regex(@"https?://(?:[\w-]+\.)+[\w-]+(?:/[\w- ./?%&=]*)?", RegexOptions.ECMAScript);
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
但以楼主这种需求,就要求网址一定是http://或https://开头了,否则是没办法判断从哪开始取的
#22
我以WWW开头不行吗?为什么没办法判断从哪?
#23
HtmlParser.HtmlWeb hw = new HtmlParser.HtmlWeb();
HtmlParser.HtmlDocument hd = new HtmlParser.HtmlDocument();
hd.DeclaredEncoding = System.Text.Encoding.Default;
hd.LoadHtml(this.txtSource.Text);
HtmlParser.HtmlNodeCollection hnc = hd.DocumentNode.SelectNodes(this.txtXpath.Text);
if (hnc == null)
{
this.txtResult.Text = "未匹配到任何数据";
return;
}
StringBuilder sb = new StringBuilder();
sb.Append(hnc.Count).Append("个\r\n");
foreach (HtmlParser.HtmlNode hn in hnc)
{
string text = hn.InnerHtml;
sb.Append(text).Append("\r\n");
}
this.txtResult.Text = sb.ToString();
#24
以哪些特定字符子串开头,这就是规则,楼主有描述清楚吗?规则不确定,问题没法解决
说句不太中听的话,没有人是你肚子里的蛔虫,所以如果你自己不把问题描述清楚,是没有人能解决你的问题的
提问也是一门学问,你的需求描述越清晰,就越有利于你的问题快速解决
好吧,废话说了一大堆,21楼的代码,还有哪些需求不满足,给出实例,要完整的源字符串,而不仅仅是结果
说句不太中听的话,没有人是你肚子里的蛔虫,所以如果你自己不把问题描述清楚,是没有人能解决你的问题的
提问也是一门学问,你的需求描述越清晰,就越有利于你的问题快速解决
好吧,废话说了一大堆,21楼的代码,还有哪些需求不满足,给出实例,要完整的源字符串,而不仅仅是结果
#25
还是上面的源字符串,只是把网址换成www.baidu.com就可以来,怎么做那?
#26
那就这样试下,看看是否满足你所有的需求吧
string test = "sdfsdfwww.baidu.com时刻冬季恋歌,源啊,这有什么用啊,随便输就有来啊";
Regex reg = new Regex(@"(?:https?://|www\.)(?:[\w-]+\.)+[\w-]+(?:/[\w- ./?%&=]*)?", RegexOptions.ECMAScript);
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
#27
多谢了啊,忙来好久了,