CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

跪求C#实现多模式匹配算法,如Wu-Manber

楼主viena(维也纳N02)2006-12-31 14:27:59 在 .NET技术 / C# 提问

如题,实在没有C#的,C的也可以  
  最好有注释~ 问题点数:300、回复次数:50Top

1 楼fellowcheng(鹰击长空)回复于 2006-12-31 14:30:40 得分 7

关注Top

2 楼fellowcheng(鹰击长空)回复于 2006-12-31 14:30:50 得分 0

板凳Top

3 楼glacier111(★冰河★)回复于 2006-12-31 14:31:09 得分 3

UpTop

4 楼viena(维也纳N02)回复于 2006-12-31 14:32:01 得分 0

不要在这里灌水,拜托!Top

5 楼viena(维也纳N02)回复于 2007-01-04 15:04:06 得分 0

也许是发错地方了~Top

6 楼glacier111(★冰河★)回复于 2007-01-04 15:06:44 得分 3

UPTop

7 楼honkerhero(做事先做人)回复于 2007-01-04 15:09:16 得分 7

没明白什么意思?什么叫多模式匹配?Top

8 楼viena(维也纳N02)回复于 2007-01-04 15:19:50 得分 0

多模式匹配就是多关键字全文检索,一篇文章只搜索一遍就可找到多个关键字~Top

9 楼liujia_0421(SnowLover)回复于 2007-01-04 15:26:16 得分 7

支持伟大的viena(维也纳nn-下潜15米,潜望镜升起)   MM..  
   
  呵呵..Top

10 楼viena(维也纳N02)回复于 2007-01-04 15:28:53 得分 0

楼上MM帮帮忙啊~Top

11 楼liujia_0421(SnowLover)回复于 2007-01-04 15:31:45 得分 3

好,帮MM找找看..  
   
  ^_^Top

12 楼honkerhero(做事先做人)回复于 2007-01-04 15:32:56 得分 7

数据库没有么?全文索引Top

13 楼GXY2005(民工甲:杀富济贫,打土豪分田地)回复于 2007-01-04 15:48:35 得分 5

复旦大学的MM?  
  不是MM吧?  
   
  Top

14 楼mobydick(敌伯威|我排著队拿著爱的号码牌)回复于 2007-01-04 16:44:36 得分 50

正则表达式?  
  string   yourStr   =   ......;//这个页面Ctrl+A,Ctrl+C  
  Regex   regex   =   new   Regex("跪求|维也纳",   RegexOptions.IgnoreCase);  
  MatchCollection   mc   =   regex.Matches(yourStr);  
  Dictionary<string,   int>   key   =   new   Dictionary<string,   int>;  
  key.Add("跪求",   0);  
  key.Add("维也纳",   0);  
  foreach(Match   m   in   mc)  
  {  
          if(m.Value   ==   "跪求")  
          {  
                  key["跪求"]++;  
          }  
          else  
          {  
                  key["维也纳"]++;  
          }  
  }Top

15 楼ustbwuyi()回复于 2007-01-04 16:51:36 得分 5

又见维也纳MM发贴,可惜我没有Top

16 楼lizhizhe2000(武安侯)回复于 2007-01-04 16:58:08 得分 7

Lucene   .NET   不知道对老大有没有帮助!Top

17 楼leohuang(LEO)回复于 2007-01-04 17:00:11 得分 16

不会是楼上的楼上那样的吧Top

18 楼zhsu(不懂生活的人)回复于 2007-01-04 17:04:24 得分 7

应该是用正则表达式来匹配Top

19 楼wxl565(汪汪)回复于 2007-01-04 17:14:47 得分 3

发ASP.NET里去呀Top

20 楼bejon(阿牛[如果我懂,必坦诚相告;如果您懂,请不吝赐教。])回复于 2007-01-04 17:34:41 得分 7

正则估计可行  
  不知道楼主想要什么效果呢Top

21 楼viena(维也纳N02)回复于 2007-01-04 17:47:42 得分 0

要把找到的关键字替换为指定的值  
  要求高执行效率,C#可能要用Unsafe代码Top

22 楼viena(维也纳N02)回复于 2007-01-04 17:51:31 得分 0

每个关键字对应不同的替换值Top

23 楼liujia_0421(SnowLover)回复于 2007-01-04 17:52:29 得分 9

viena(维也纳nn-下潜15米,潜望镜升起)   MM,我已经尽力,想千方,设百计,结果还是没能找着..  
   
  帮MM顶哦..  
   
  如果找不着就看算法写个呗,对你来说应该也不难..Top

24 楼liujia_0421(SnowLover)回复于 2007-01-04 17:53:19 得分 0

再顶..  
   
  ^_^Top

25 楼net_lover(【孟子E章】)回复于 2007-01-04 17:55:36 得分 20

这些应该可以  
  C#,VB.NET的都有  
  http://dotnetjunkies.com/Tutorial/195E323C-78F3-4884-A5AA-3A1081AC3B35.dcik  
   
  Top

26 楼net_lover(【孟子E章】)回复于 2007-01-04 17:57:45 得分 70

and  
   
  http://www.codeproject.com/csharp/highlightcs.asp?df=100&forumid=14824&exp=0&select=1760087Top

27 楼viena(维也纳N02)回复于 2007-01-04 19:52:42 得分 0

我知道可以用正则,但我想自己实现~Top

28 楼liujia_0421(SnowLover)回复于 2007-01-04 20:38:07 得分 3

支持MM,呵呵..Top

29 楼superxiaomm(小美)回复于 2007-01-04 20:50:05 得分 3

jfTop

30 楼net_lover(【孟子E章】)回复于 2007-01-04 21:00:46 得分 0

ReflectorTop

31 楼marvelboy123()回复于 2007-01-04 21:36:10 得分 10

while(i&lt;=lengthRes   &amp;&amp;j&lt;=lengthStr)   {   if(res[i]==str[j])   {   //   go   on   matching   ++i;}   else   if(   j   ==   lengthStr   )   return   i-lengthStr;起存在和串   T   相同的子串,则称匹配成功,返回第一个。这样的子串在串   S   中的下标,否则返回   -1   */   int   i   =   pos,   j   =   0;   while   (   res[i+j]   !=   ’\0’&amp;&amp;   str[j]   !=   ’\0’)//   匹配成功   返回下标   else   return   -1;   //   串S中(第pos个字符起)不存在和串T相同的子串}  
  Top

32 楼viena(维也纳N02)回复于 2007-01-05 09:26:47 得分 0

我要的是算法实现,没有那么简单的~Top

33 楼ustbwuyi()回复于 2007-01-05 09:32:47 得分 0

连孟子都惊动了..Top

34 楼shuiwatermizu()回复于 2007-01-05 15:26:10 得分 20

/*  
  sm.cs   &copy;   2007   by   Shuiwatermizu  
  1.   scan   the   original   string   from   the   start.  
  2.   look   for   all   the   string   in   lookfor   array.  
  if   found,   scan   the   original   string   from   the   position   after   the   found   string  
  if   not   found,   scan   the   next   character   of   the   original   string  
   
  This   method   is   faster   than   regex.  
  */  
  using   System;  
  using   System.Diagnostics;  
   
  public   class   T  
  {  
   
  public   static   void   Main()  
  {  
  string   original=@"onetwothreefour";  
  string[]   lookfor=new   string[]{"two",   "four"};  
  string[]   replacewith=new   string[]{"twenty",   "forty"};  
  Console.WriteLine("After   replace:   {0}",   ReplaceEx2(original,   lookfor,   replacewith));  
  }//end   of   Main()  
   
  public   static   string   ReplaceEx2(string   original,   string[]   lookfor,   string[]   replacewith)  
  {  
  int   increasedSize=0;  
  for   (int   t=0;t<lookfor.Length;t++)  
  {  
  increasedSize+=replacewith[t].Length-lookfor[t].Length;  
  }  
  int   retLen=original.Length+increasedSize;//Adjust   this   value   to   accomodate   the   result   string.  
   
  char[]   ret=new   char[retLen];  
   
  int   i=0;   //position   of   the   original   string  
  int   j=0;   //position   of   the   result.  
  int   m=0;  
  while   (i<original.Length)  
  {  
  for   (m=0;m<lookfor.Length;m++)//loop   through   all   the   search   strings  
  {  
  int   n=0;  
  while   (n<lookfor[m].Length)//loop   through   a   single   search   string  
  {  
  if   (i+n<original.Length)  
  {  
  if   (lookfor[m][n]!=original[i+n])  
  break;//not   found  
  }  
  else  
  break;  
  n++;  
  }  
   
  if   (n==lookfor[m].Length)//found   match   of   lookfor[m]  
  {  
  Console.WriteLine("match   {0}   at   position   {1}",   lookfor[m],   i);//DoFoundOperation();  
  for   (int   k=0;k<replacewith[m].Length;k++)  
  ret[j+k]=replacewith[m][k];  
  j+=replacewith[m].Length;  
  i+=lookfor[m].Length;  
  break;  
  }  
  }  
   
  if   (m==lookfor.Length)//not   match   all   the   search   string  
  {  
  ret[j]=original[i];  
  j++;  
  i++;  
  }  
  }//loop   through   the   total   string.  
  return   (new   string(ret));  
  }  
  }Top

35 楼viena(维也纳N02)回复于 2007-01-08 09:09:42 得分 0

upTop

36 楼viena(维也纳N02)回复于 2007-01-16 11:43:43 得分 0

因为有几千个关键字,对执行效率要求比较高  
  再顶一下,如果实在没有只好用正则了Top

37 楼liujia_0421(SnowLover)回复于 2007-01-16 11:48:08 得分 0

还没找到吗?  
   
  帮MM顶下..  
   
  嘎嘎..Top

38 楼idiotzeng(白痴)回复于 2007-01-16 11:52:58 得分 0

有没有其他语言的代码?Top

39 楼hertcloud(·£孙子兵法£·)回复于 2007-01-16 11:57:04 得分 10

SQL配置   全文索引   用   喂词   查询  
  不行、?Top

40 楼renmasheshou(狼狗)回复于 2007-01-16 12:02:35 得分 3

楼主是MM????Top

41 楼mobydick(敌伯威|我排著队拿著爱的号码牌)回复于 2007-01-16 12:07:03 得分 0

~~~几千关键字Top

42 楼hertcloud(·£孙子兵法£·)回复于 2007-01-16 12:10:30 得分 15

c++primer   6章   里面有   类似   算法Top

43 楼liujia_0421(SnowLover)回复于 2007-01-16 12:29:03 得分 0

TO:楼主是MM????  
   
  嗯,是的..Top

44 楼viena(维也纳N02)回复于 2007-01-16 12:51:12 得分 0

我不是MM,楼上是我女朋友~Top

45 楼liujia_0421(SnowLover)回复于 2007-01-16 12:59:18 得分 0

^_^Top

46 楼mobydick(敌伯威|我排著队拿著爱的号码牌)回复于 2007-01-16 13:14:47 得分 0

liujia_0421(SnowLover)   (   )   信誉:100         Blog     2007-01-16   12:29:03     得分:   0      
     
     
        TO:楼主是MM????  
   
  嗯,是的..  
       
     
  Top      
    viena(维也纳nn-下潜15米,潜望镜升起)   (   )   信誉:100         Blog     2007-01-16   12:51:10     得分:   0      
     
     
        我不是MM,楼上是我女朋友~  
       
     
  Top      
    liujia_0421(SnowLover)   (   )   信誉:100         Blog     2007-01-16   12:59:18     得分:   0      
     
     
        ^_^  
       
     
  Top      
  ============================  
  TQ贴~~Top

47 楼viena(维也纳N02)回复于 2007-01-27 23:13:51 得分 0

没办法,只能用正则了  
  给出正则具体解决方案的给了高一点的分  
  抱歉,其他方案更不适合,但也酌情给了些分~Top

48 楼mobydick(敌伯威|我排著队拿著爱的号码牌)回复于 2007-01-28 10:20:36 得分 0

......看来项目进度不紧。过了一个月才决定~Top

49 楼viena(维也纳N02)回复于 2007-01-29 09:04:13 得分 0

//......看来项目进度不紧。过了一个月才决定~  
  非也,项目没开始之前我不能做技术准备吗?Top

50 楼viena(维也纳N02)回复于 2007-01-29 09:06:16 得分 0

如果项目已经开始了,我就不会到这里来问了  
  本来也没抱多大希望,只是想碰碰运气而已~Top

相关问题

关键词

得分解答快速导航

  • 帖主:viena
  • fellowcheng
  • glacier111
  • glacier111
  • honkerhero
  • liujia_0421
  • liujia_0421
  • honkerhero
  • GXY2005
  • mobydick
  • ustbwuyi
  • lizhizhe2000
  • leohuang
  • zhsu
  • wxl565
  • bejon
  • liujia_0421
  • net_lover
  • net_lover
  • liujia_0421
  • superxiaomm
  • marvelboy123
  • shuiwatermizu
  • hertcloud
  • renmasheshou
  • hertcloud

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo