正则表达式处理 与 字符串处理 哪个效率更高?

还不够格啊 2004-07-26 03:40:28
初学正则表达式,有点疑问:

有几千个字符串,要判断每个字符串中是否包含 “Book”,可以有两种方法:

1。字符串处理
在循环内:
if( str1.IndexOf("Book") > 0 )
{
}

2。正则表达式
Regex r = new Regex( "Book" ); // 在循环外
在循环内:
if( r.IsMatch( str1 ) )
{
}

以上那种执行效率会高些?

更进一步,假如问题是:在几千个字符串中找出含有 “Book”和/或 “Expert”但不包含“Result”的字符串,那种方法效率高些?用正则表达式该怎样写?

...全文
67318 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
csq0516 2004-08-06
  • 打赏
  • 举报
回复
up
xiays 2004-08-06
  • 打赏
  • 举报
回复
如果是简单的字符串查询正则表达式的速度并不快,我以前做过一个150K的字符串中搜索的例子,结果正则表达式,比Instr()慢.
amami 2004-08-06
  • 打赏
  • 举报
回复
正则表达式吧! 你自己写点东西测试一下!结果公布!
沈逸 2004-08-06
  • 打赏
  • 举报
回复
我 觉得 好像 regex好像 要厉害点
qqchen79 2004-08-06
  • 打赏
  • 举报
回复
Regex的算法复杂度是固定的O(n),在完成了Regex到有限自动机的转换以后,判断一个字符串是否匹配所需的时间只和该字符串的长度有关,这个字符串里面的每个字符至多会被检查一次。
String实现的IndexOf采用的是比较笨的办法,某些情况下它可能需要检查一个字符多次,比如匹配abac到ababac的时候。
所以如果有大量的字符串需要检查,Regex应该要比IndexOf优化。如果有更多的匹配条件,那么Regex的优势就更明显。你的例子“Book”和/或 “Expert”但不包含“Result”,IndexOf要检查字符串3次,但是Regex仍然只要一次(但是“不包含”的Regex写起来不是很容易)。:)
lexchou 2004-08-05
  • 打赏
  • 举报
回复
我觉得方法1比2高效,1只用搜索,2需要匹配


楼主你自己测试一下不久清楚了啊,100万次这两个方法的操作看耗时多少
diaopeng 2004-08-05
  • 打赏
  • 举报
回复
当然是正则表达式啦,因为它是通过编译的,而且由编译器直接支持
KOF2004 2004-08-02
  • 打赏
  • 举报
回复
效率高?
CPU时间还是内存?还是两者?
heroygt 2004-08-02
  • 打赏
  • 举报
回复
其实差不多,他们内部的算法应该是一样的。
curen29 2004-07-30
  • 打赏
  • 举报
回复
使用正则表达式,字符串使用会大大降低效率
eboywy 2004-07-28
  • 打赏
  • 举报
回复
感觉还是方法一效率好些。
songxuehui 2004-07-28
  • 打赏
  • 举报
回复
关注
zhangyp 2004-07-26
  • 打赏
  • 举报
回复
up
lzf913 2004-07-26
  • 打赏
  • 举报
回复
up

111,111

社区成员

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

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

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