我现在已经把web页面里的所有内容抓取到一个字符里面了,问题是现在如何从这个字符串里取出script标签啊。
比如我现在有个字符串里包含
这两个script标签,我想把这两个取出来,怎么取呢?用正则表达式只能取一个。。。。看看我的正则表达式
5分
用正则表达式能取一个的话还不好办?取出来之后,把取出来的内容replace掉,然后再取一个呗,直到取不出为止啊。
5分
Matches ms= Regex.Matches(“你的字符串”,”你的正则表达式“);
List script=new List();
foreach(Match m in ms)
{
script.Add( m.Value);
}
script 这个就有多个了.
10分
在winform中textBox1输入字符串,textBox2输入匹配的结果.
上个按钮调用下列函数.
如果自己想封装一下,把对应控件改成传入传出参即可.
pre class=”brush: csharp”>
public void RegexScript()
{
textBox2.Text = “”;
string patten = “[\s.]*?”;
MatchCollection mc = Regex.Matches(textBox1.Text, patten);
for (int i = 0; i
{
Match m = mc[i];
textBox2.Text += m.Value + “\r\n”;
}
}
/pre>
5分
把html当成xpath用不好么,要是人家这么写的,你这个regex不就抓瞎了
5分
引用 6 楼 silwol 的回复:
把html当成xpath用不好么,要是人家这么写的,你这个regex不就抓瞎了
在html中这种写法是错误的.
10分
用正则表达式也是可以的。另外可以使用字符串替换的方法去做。
在html中查找两个字符之间的中间字符串。
函数如下:这样的结果可能是多个,使用递归的方法。使用List将所有符合条件的全部保存起来.如果只有一个符合条件的话。则结果为lstResutl[0]就是你想要的结果
public static void GetMidInfoOfStartAndEnd2(String content, String start, string end, List lstResult )
{
int s1 = content.IndexOf(start);
if(s1 >= 0)
{
//得到s1以后所有的内容
String content2 = content.Substring(s1);
int s2 = content2.IndexOf(end);
if(s2 >= 0)
{
String tmpInfo = content2.Substring(0, s2);
lstResult.Add(tmpInfo.Trim());
content2 = content2.Substring(s2);
GetMidInfoOfStartAndEnd2(content2, start, end, lstReplaceStr, lstResult);
}
}
}
来源:it知识 http://www.itzhishi.com/function/detail/18.html
引用 7 楼 wonderfuly 的回复:
Quote: 引用 6 楼 silwol 的回复:
把html当成xpath用不好么,要是人家这么写的,你这个regex不就抓瞎了
在html中这种写法是错误的.
为什么是错误的啊?