小弟一直对正则不感冒,看了好久也还是不会,特来请教各位表达式是这样的
1.判断是否是一个html标记 如:<html> <html body="g"> </html>等
规则:<标记> <标记 属性="">(标记和属性之间有一个空格,属性可以是多个) </标记>2取得一个标记名 如:<html> <html body="g"> </html>等
规则:<标记>得到“标记” <标记 属性="">(标记和属性之间有一个空格,属性可以是多个,用空格隔开)得到“标记”3取得一个属性名列表 如:<html body="g" tag="t">
规则:<标记 属性="" 属性2="">得到(属性|属性2)3根据属性名取得一个属性的值 如:<html body="g" tag="t">
规则:<标记 属性="x" 属性2="y">根据“属性”得到“x”4根据一个标记对取得它们之间的内容(其中包含两种类型的值:一个不含有标记,一个含有标记) 如:
<html>
test body
...
</html><html body="g">
test body
...
</html>规则:
<html>
test body
...
</html>
(得到:
1:test body
...2:<html>
test body
...
</html>
)<html body="g">
test body
...
</html>
(得到:
1:test body
...2:<html body="g">
test body
...
</html>
)
好了就是这些了 有点多,呵呵
1.判断是否是一个html标记 如:<html> <html body="g"> </html>等
规则:<标记> <标记 属性="">(标记和属性之间有一个空格,属性可以是多个) </标记>2取得一个标记名 如:<html> <html body="g"> </html>等
规则:<标记>得到“标记” <标记 属性="">(标记和属性之间有一个空格,属性可以是多个,用空格隔开)得到“标记”3取得一个属性名列表 如:<html body="g" tag="t">
规则:<标记 属性="" 属性2="">得到(属性|属性2)3根据属性名取得一个属性的值 如:<html body="g" tag="t">
规则:<标记 属性="x" 属性2="y">根据“属性”得到“x”4根据一个标记对取得它们之间的内容(其中包含两种类型的值:一个不含有标记,一个含有标记) 如:
<html>
test body
...
</html><html body="g">
test body
...
</html>规则:
<html>
test body
...
</html>
(得到:
1:test body
...2:<html>
test body
...
</html>
)<html body="g">
test body
...
</html>
(得到:
1:test body
...2:<html body="g">
test body
...
</html>
)
好了就是这些了 有点多,呵呵
解决方案 »
- 对于C#中事件this.button1.Click += new System.EventHandler(this.button1_Click); 这句怎么解?
- 提问:howto- winform程序中调用dos命令不弹出dos窗口
- 请帮忙解释下文件读取的代码?
- 有关Text控件的问题~请教大家
- C#中static方法问题
- c# XML问题
- 思归等大侠请进,帮up都有分
- C#中的form窗体利用webbrowser引用了一个网页
- 请问一下,C#中如何将字符(char)转换成字符串类型(string)?
- WebBrowser1.DocumentText 赋值失败
- 线程间发消息
- DBNull,我郁闷
<html><head></head></html>这种情况
//如果判断其中是否包含这一规则的字符串
if(Regex.IsMatch(yourStr, @"^\s*<([^>]+)>\s*<\S+\s(?:[^=]+=""[^""]*""\s*)*>\s*</\1>\s*$", RegexOptions.IgnoreCase))
{
richTextBox2.Text += "符合要求";
}
//如果判断整个字符串是否符合这样的规则
if(Regex.IsMatch(yourStr, @"^\s*<([^>]+)>\s*<\S+\s(?:[^=]+=""[^""]*""\s*)*>\s*</\1>\s*$", RegexOptions.IgnoreCase))
{
richTextBox2.Text += "符合要求";
}
同时取一个还是多个
//取一个
Match m = Regex.Match(yourStr, @"(?<=<)[^/>\s]+(?=[^>]*>)");
if (m.Success)
{
richTextBox2.Text += m.Value;
}
//取多个
MatchCollection mc = Regex.Matches(yourStr, @"(?<=<)[^/>\s]+(?=[^>]*>)");
foreach(Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
MatchCollection mc = Regex.Matches(yourStr, @"[^\s=]+(?==""[^""]*"")");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
3.2、
string tag = Regex.Escape(textBox1.Text);
Regex reg = new Regex(@"(?<=" + tag + @"="")[^""]*(?="")", RegexOptions.IgnoreCase);
Match m = reg.Match(yourStr);
if (m.Success)
{
richTextBox2.Text += m.Value;
}
Match m = Regex.Match(yourStr, @"<([a-z]+)[^>]*>((?>(?<o>)<\1[^>]*>|(?<-o>)</\1>|(?!</?\1).)*(?(o)(?!)))</\1>", RegexOptions.IgnoreCase|RegexOptions.Singleline);
if (m.Success)
{
richTextBox2.Text += m.Groups[2].Value + "\n\n"; //不带标签
richTextBox2.Text += m.Value + "\n\n"; //带标签
}
相关讨论参考下面这个帖子
这类嵌套正则如何写?通过id属性获得一个标签块