我要取前后两段红色字符之间的所有蓝色字符,用正则如何写??请指教!
19 个解决方案
#1
(<DIV class="g" width="555px"> <H2 class="r">)([\s\S]*?)(<hr width="600px" style="text-align:left;"/> )
解说一下
第一个()里面是你开始的串 (你可能要转义 我只是把你的内容拷贝进来)
第三个()里面是你结束的内容
[\s\S]* 代表任意个字符
在后面加? 代表最少数量的任意字符 这是问题的关键
也就是说他找到第一个匹配 <hr width="600px" style="text-align:left;"/>
的时候就会停下来
如果没有加? 他就会尽量多匹配字符
具体请查看匹配模式
解说一下
第一个()里面是你开始的串 (你可能要转义 我只是把你的内容拷贝进来)
第三个()里面是你结束的内容
[\s\S]* 代表任意个字符
在后面加? 代表最少数量的任意字符 这是问题的关键
也就是说他找到第一个匹配 <hr width="600px" style="text-align:left;"/>
的时候就会停下来
如果没有加? 他就会尽量多匹配字符
具体请查看匹配模式
#2
这个用string的IndexOf与Substring方法就可以了吧
#3
不行啊?还是取不到啊?
还有如果我想用match.Result("${get}") 这种c#里参数化的方式取到值,正则应该如何写啊?
还有如果我想用match.Result("${get}") 这种c#里参数化的方式取到值,正则应该如何写啊?
#4
各位高手路过来帮下忙啊!
#5
要注意转义 把一个字符串转为正则描述总是很麻烦的 可以考虑把开始和结尾的字符串变短
#6
最近变懒了。
帮顶吧
帮顶吧
#7
<DIV class="g" width="555px"> <H2 class="r">(?<get>.*?)?<hr width="600px" style="text-align:left;"/>
#8
哎,郁闷我还是采集不到啊,
links="<DIV class=\"g\" width=\"555px\"><H2 class=\"r\">(?<get>.*?)?<hr width=\"600px\" style=\"text-align:left;\"/>";
regex = new Regex(links, RegexOptions.Singleline | RegexOptions.IgnoreCase);
matches = regex.Matches(pageText);
#9
links="<DIV class=\"g\" width=\"555px\"><H2 class=\"r\">(?<get>.*?)?<hr width=\"600px\" style=\"text-align:left;\"/>";
↑ 中间有个空格吧
↑ 中间有个空格吧
#10
<DIV class=\"g\" width=\"555px\"> 和 <H2 class=\"r\">(? <get>.*?)? <hr width=\"600px\" style=\"text-align:left;\"/>";
中间有没有空格?
中间有没有空格?
#11
本来是想帮你的
爱莫能助
我只会PERL 和JS的正则表达就是不会C#的
正在努力学习中
爱莫能助
我只会PERL 和JS的正则表达就是不会C#的
正在努力学习中
#12
7 楼正解
#13
<DIV class=\"g\" width=\"555px\"> 和 <H2 class=\"r\">中间没有空格
#14
<DIV class="g" width="555px"> <H2 class="r">(? <get>.*?)? <hr width="600px" style="text-align:left;"/>
不明白 (? <get>.*?)? 第2个和第3个 “?”的用途
不明白 (? <get>.*?)? 第2个和第3个 “?”的用途
#15
把空格换成\\s
匹配用单行模式
===============
汶川赈灾:http://finance.sina.com.cn/roll/20080516/15384878376.shtml
匹配用单行模式
===============
汶川赈灾:http://finance.sina.com.cn/roll/20080516/15384878376.shtml
#16
我把空格换成了\\s还是不行啊
links="<DIV\\sclass=\"g\"\\swidth=\"555px\"><H2\\sclass=\"r\">(?<get>.*?)?<hr\\swidth=\"600px\"\\sstyle=\"text-align:left;\"/>";
regex = new Regex(links, RegexOptions.Singleline | RegexOptions.IgnoreCase);
matches = regex.Matches(pageText);
#17
如果前后都是固定的字符串,没有必要用正则的,SubString就可以了
Match m = Regex.Match(str, @"<DIV\s+class=""g""\s+width=""555px"">\s*<H2\s+class=""r"">(?<get>[\s\S]*?)<hr\s+width=""600px""\s+style=""text-align:left;""/>", RegexOptions.IgnoreCase);
if (m.Success)
MessageBox.Show(m.Result("${get}"));
#18
哎,还是不行啊,奇怪.前后都是固定的字符串,但是pageText 中所匹配links的并非只一个,我要取到所有匹配的的项的集合
那如果用SubString 的话,又应该怎么做呢?
那如果用SubString 的话,又应该怎么做呢?
#19
按照你贴出来的HTML,我测试的,怎么会不行呢?
你确认你贴出来的HTML和你实际运行的HTML一样?
你确认你贴出来的HTML和你实际运行的HTML一样?
#20
#1
(<DIV class="g" width="555px"> <H2 class="r">)([\s\S]*?)(<hr width="600px" style="text-align:left;"/> )
解说一下
第一个()里面是你开始的串 (你可能要转义 我只是把你的内容拷贝进来)
第三个()里面是你结束的内容
[\s\S]* 代表任意个字符
在后面加? 代表最少数量的任意字符 这是问题的关键
也就是说他找到第一个匹配 <hr width="600px" style="text-align:left;"/>
的时候就会停下来
如果没有加? 他就会尽量多匹配字符
具体请查看匹配模式
解说一下
第一个()里面是你开始的串 (你可能要转义 我只是把你的内容拷贝进来)
第三个()里面是你结束的内容
[\s\S]* 代表任意个字符
在后面加? 代表最少数量的任意字符 这是问题的关键
也就是说他找到第一个匹配 <hr width="600px" style="text-align:left;"/>
的时候就会停下来
如果没有加? 他就会尽量多匹配字符
具体请查看匹配模式
#2
这个用string的IndexOf与Substring方法就可以了吧
#3
不行啊?还是取不到啊?
还有如果我想用match.Result("${get}") 这种c#里参数化的方式取到值,正则应该如何写啊?
还有如果我想用match.Result("${get}") 这种c#里参数化的方式取到值,正则应该如何写啊?
#4
各位高手路过来帮下忙啊!
#5
要注意转义 把一个字符串转为正则描述总是很麻烦的 可以考虑把开始和结尾的字符串变短
#6
最近变懒了。
帮顶吧
帮顶吧
#7
<DIV class="g" width="555px"> <H2 class="r">(?<get>.*?)?<hr width="600px" style="text-align:left;"/>
#8
哎,郁闷我还是采集不到啊,
links="<DIV class=\"g\" width=\"555px\"><H2 class=\"r\">(?<get>.*?)?<hr width=\"600px\" style=\"text-align:left;\"/>";
regex = new Regex(links, RegexOptions.Singleline | RegexOptions.IgnoreCase);
matches = regex.Matches(pageText);
#9
links="<DIV class=\"g\" width=\"555px\"><H2 class=\"r\">(?<get>.*?)?<hr width=\"600px\" style=\"text-align:left;\"/>";
↑ 中间有个空格吧
↑ 中间有个空格吧
#10
<DIV class=\"g\" width=\"555px\"> 和 <H2 class=\"r\">(? <get>.*?)? <hr width=\"600px\" style=\"text-align:left;\"/>";
中间有没有空格?
中间有没有空格?
#11
本来是想帮你的
爱莫能助
我只会PERL 和JS的正则表达就是不会C#的
正在努力学习中
爱莫能助
我只会PERL 和JS的正则表达就是不会C#的
正在努力学习中
#12
7 楼正解
#13
<DIV class=\"g\" width=\"555px\"> 和 <H2 class=\"r\">中间没有空格
#14
<DIV class="g" width="555px"> <H2 class="r">(? <get>.*?)? <hr width="600px" style="text-align:left;"/>
不明白 (? <get>.*?)? 第2个和第3个 “?”的用途
不明白 (? <get>.*?)? 第2个和第3个 “?”的用途
#15
把空格换成\\s
匹配用单行模式
===============
汶川赈灾:http://finance.sina.com.cn/roll/20080516/15384878376.shtml
匹配用单行模式
===============
汶川赈灾:http://finance.sina.com.cn/roll/20080516/15384878376.shtml
#16
我把空格换成了\\s还是不行啊
links="<DIV\\sclass=\"g\"\\swidth=\"555px\"><H2\\sclass=\"r\">(?<get>.*?)?<hr\\swidth=\"600px\"\\sstyle=\"text-align:left;\"/>";
regex = new Regex(links, RegexOptions.Singleline | RegexOptions.IgnoreCase);
matches = regex.Matches(pageText);
#17
如果前后都是固定的字符串,没有必要用正则的,SubString就可以了
Match m = Regex.Match(str, @"<DIV\s+class=""g""\s+width=""555px"">\s*<H2\s+class=""r"">(?<get>[\s\S]*?)<hr\s+width=""600px""\s+style=""text-align:left;""/>", RegexOptions.IgnoreCase);
if (m.Success)
MessageBox.Show(m.Result("${get}"));
#18
哎,还是不行啊,奇怪.前后都是固定的字符串,但是pageText 中所匹配links的并非只一个,我要取到所有匹配的的项的集合
那如果用SubString 的话,又应该怎么做呢?
那如果用SubString 的话,又应该怎么做呢?
#19
按照你贴出来的HTML,我测试的,怎么会不行呢?
你确认你贴出来的HTML和你实际运行的HTML一样?
你确认你贴出来的HTML和你实际运行的HTML一样?