程序已经弄好了,但是有个地方不是很动原理,请讲解一下

hexinyu2005 2007-05-12 11:14:10
string strTmp="<img src=\"aaa.jpg\" border=0><br><p><img src=\"bbb.jpg\" border=0 ><br>".Replace(" ","");
MatchCollection mc = Regex.Matches(strTmp, @"<img\s+[^>]*src=""(?<img>[^""]*?)""[^>]*?>", RegexOptions.IgnoreCase);

为什么正则=""(?<img>[^""]*?)""
前后都有两个""
...全文
166 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hexinyu2005 2007-05-12
  • 打赏
  • 举报
回复
太感谢了
-过客- 2007-05-12
  • 打赏
  • 举报
回复
要匹配在正则中有特殊意义的字符本身时,用\来对它进行转义,“\[”匹配字符“[”

[^\]]*

使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个

这里的“\]”就是用来匹配“]”的,而后一个“]”是与前面“[”匹对做为[]来匹配包含在其中的一个字符的

这些内容看下我推荐的教程就会明白了,睡了,有问题明天再解答

你给的那个式子中有几处匹配普通字符“]”并没有转义,那是因为在那里并不会发生歧义,但最好加上“\”,这样代码的可读性会更好一些,也避免出错
hexinyu2005 2007-05-12
  • 打赏
  • 举报
回复
(?<type>[^\]]*) 为什么有两个]]

.*\[题型: 为什么有个 \

-过客- 2007-05-12
  • 打赏
  • 举报
回复
如果对正则这方面感兴趣,我推荐你一篇教程以及一个工具

http://www.regexlab.com/zh/regref.htm

match tracer
-过客- 2007-05-12
  • 打赏
  • 举报
回复
. 小数点可以匹配除了换行符(\n)以外的任意一个字符
* 表达式不出现或出现任意次
.*\[题型:这里是匹配到普通文本“[题型”为止,这里最好用非贪婪模式.*?

(?<type>[^\]]*) 命名捕获组,匹配不是“\”的任意字任到type这个组里,可以通过Group["type"].Value得到匹配的内容

后面的就都是同样道理了
-过客- 2007-05-12
  • 打赏
  • 举报
回复
@".*\[题型:(?<type>[^\]]*)].*\[难度:(?<diff>[^\]]*)].*分值:\[(?<score>[^\]]*)]}}"

这个是用来分别匹配出题型,难度和分值
哪里不明白,还是要全部讲解一下

hexinyu2005 2007-05-12
  • 打赏
  • 举报
回复
string strTmp="1、{{[题型:填空题]##[难度:较易]##[知识点:hexytest]##分值:[99.00]}}\v命题:2+2=?\r\v解析:解析:4\r解析:2+2=4\r\r";
hexinyu2005 2007-05-12
  • 打赏
  • 举报
回复
System.Text.RegularExpressions.Match mc = Regex.Match(strTmp, @".*\[题型:(?<type>[^\]]*)].*\[难度:(?<diff>[^\]]*)].*分值:\[(?<score>[^\]]*)]}}", RegexOptions.IgnoreCase);

能讲解一下这个的意思吗,我马上结帖
hexinyu2005 2007-05-12
  • 打赏
  • 举报
回复
哦,谢谢了
-过客- 2007-05-12
  • 打赏
  • 举报
回复
因为前面有@,所以要用""对"进行转义
如果前面不加@,那么就需要用\"对"进行转义了
等价于
MatchCollection mc = Regex.Matches(strTmp, "<img\\s+[^>]*src=\"(?<img>[^\"]*?)\"[^>]*?>", RegexOptions.IgnoreCase);

也就是用来匹配字符"本身的

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧