正则表达式取两字符串之间所有字符

时间:2021-08-21 18:49:56
<DIV class="g" width="555px"><H2 class="r"> &nbsp;<!--IMG style='VERTICAL-ALIGN: middle' height=16 src='/search.gif' width=16 border=0-->&nbsp;&nbsp;<!--A class="l" onmousedown="return clk(0,'','','res','1','')" href="#" target="_blank">ly_003_oLX_0640.txt</A--></H2><TABLE cellSpacing="0" cellPadding="0" border="0"><TBODY><TR><TD class="j"><div id="item_ly_003_oLX_0640" class="item"><div id="title_ly_003_oLX_0640" class="title_mid"> </div><div class="itemCnt"><div class="itemT">  录音中有五组对话和五个问题,听对话和问题两遍后,从每小题A,B,C三幅图画中选出符合问题答案的图画。<br />  </div><div class="choiceNum">1.</div><div style="text-align:center"><img src="/images/tm_img/003/ly_003_oLX_0640_a.gif" style="text-align:center" /></div><br /><div class="choice"><ul><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_3_1" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_3_1" name="ly_003_oLX_0640_3" value="1" /><label for="i_ly_003_oLX_0640_3_1" class="answerLabel">A.</label></div><div class="choiceCnt">A</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_3_2" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_3_2" name="ly_003_oLX_0640_3" value="2" /><label for="i_ly_003_oLX_0640_3_2" class="answerLabel">B.</label></div><div class="choiceCnt">B</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_3_3" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_3_3" name="ly_003_oLX_0640_3" value="3" /><label for="i_ly_003_oLX_0640_3_3" class="answerLabel">C.</label></div><div class="choiceCnt">C</div></div><div class="temp"></div></li></ul></div><div class="temp"></div><div class="choiceNum">2.</div><div style="text-align:center"><img src="/images/tm_img/003/ly_003_oLX_0640_b.gif" style="text-align:center" /></div><br /><div class="choice"><ul><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_4_1" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_4_1" name="ly_003_oLX_0640_4" value="1" /><label for="i_ly_003_oLX_0640_4_1" class="answerLabel">A.</label></div><div class="choiceCnt">A</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_4_2" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_4_2" name="ly_003_oLX_0640_4" value="2" /><label for="i_ly_003_oLX_0640_4_2" class="answerLabel">B.</label></div><div class="choiceCnt">B</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_4_3" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_4_3" name="ly_003_oLX_0640_4" value="3" /><label for="i_ly_003_oLX_0640_4_3" class="answerLabel">C.</label></div><div class="choiceCnt">C</div></div><div class="temp"></div></li></ul></div><div class="temp"></div><div class="choiceNum">3.</div><div style="text-align:center"><img src="/images/tm_img/003/ly_003_oLX_0640_c.gif" style="text-align:center" /></div><br /><div class="choice"><ul><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_5_1" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_5_1" name="ly_003_oLX_0640_5" value="1" /><label for="i_ly_003_oLX_0640_5_1" class="answerLabel">A.</label></div><div class="choiceCnt">A</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_5_2" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_5_2" name="ly_003_oLX_0640_5" value="2" /><label for="i_ly_003_oLX_0640_5_2" class="answerLabel">B.</label></div><div class="choiceCnt">B</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_5_3" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_5_3" name="ly_003_oLX_0640_5" value="3" /><label for="i_ly_003_oLX_0640_5_3" class="answerLabel">C.</label></div><div class="choiceCnt">C</div></div><div class="temp"></div></li></ul></div><div class="temp"></div><div class="choiceNum">4.</div><div style="text-align:center"><img src="/images/tm_img/003/ly_003_oLX_0640_d.gif" style="text-align:center" /></div><br /><div class="choice"><ul><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_6_1" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_6_1" name="ly_003_oLX_0640_6" value="1" /><label for="i_ly_003_oLX_0640_6_1" class="answerLabel">A.</label></div><div class="choiceCnt">A</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_6_2" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_6_2" name="ly_003_oLX_0640_6" value="2" /><label for="i_ly_003_oLX_0640_6_2" class="answerLabel">B.</label></div><div class="choiceCnt">B</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_6_3" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_6_3" name="ly_003_oLX_0640_6" value="3" /><label for="i_ly_003_oLX_0640_6_3" class="answerLabel">C.</label></div><div class="choiceCnt">C</div></div><div class="temp"></div></li></ul></div><div class="temp"></div><div class="choiceNum">5.</div><div style="text-align:center"><img src="/images/tm_img/003/ly_003_oLX_0640_e.gif" style="text-align:center" /></div><br /><div class="choice"><ul><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_7_1" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_7_1" name="ly_003_oLX_0640_7" value="1" /><label for="i_ly_003_oLX_0640_7_1" class="answerLabel">A.</label></div><div class="choiceCnt">A</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_7_2" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_7_2" name="ly_003_oLX_0640_7" value="2" /><label for="i_ly_003_oLX_0640_7_2" class="answerLabel">B.</label></div><div class="choiceCnt">B</div></div><div class="temp"></div></li><li class="choiceLi_0"><div class="choiceAll_0"><div id="iDiv_ly_003_oLX_0640_7_3" class="choiceType"><input type="radio" id="i_ly_003_oLX_0640_7_3" name="ly_003_oLX_0640_7" value="3" /><label for="i_ly_003_oLX_0640_7_3" class="answerLabel">C.</label></div><div class="choiceCnt">C</div></div><div class="temp"></div></li></ul></div><div class="temp"></div></div><div class="temp"></div><div id="room_ly_003_oLX_0640" class="room"></div></div>        <BR/></TD></TR></TBODY></TABLE></DIV> <hr width="600px" style="text-align:left;"/>

我要取前后两段红色字符之间的所有蓝色字符,用正则如何写??请指教!

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;"/> 
的时候就会停下来

如果没有加? 他就会尽量多匹配字符

具体请查看匹配模式

#2


这个用string的IndexOf与Substring方法就可以了吧

#3


不行啊?还是取不到啊?
还有如果我想用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#的
正在努力学习中

#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个 “?”的用途

#15


把空格换成\\s
匹配用单行模式

=============== 
汶川赈灾: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 的话,又应该怎么做呢?

#19


按照你贴出来的HTML,我测试的,怎么会不行呢?

你确认你贴出来的HTML和你实际运行的HTML一样?

#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;"/> 
的时候就会停下来

如果没有加? 他就会尽量多匹配字符

具体请查看匹配模式

#2


这个用string的IndexOf与Substring方法就可以了吧

#3


不行啊?还是取不到啊?
还有如果我想用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#的
正在努力学习中

#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个 “?”的用途

#15


把空格换成\\s
匹配用单行模式

=============== 
汶川赈灾: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 的话,又应该怎么做呢?

#19


按照你贴出来的HTML,我测试的,怎么会不行呢?

你确认你贴出来的HTML和你实际运行的HTML一样?

#20