dblack / wobblini.net wrote: > Hi -- > > On Wed, 5 Apr 2006, Clint Pidlubny wrote: > >> Hello, >> >> What is the best approach to searching a string for another string? >> >> For instance, I have: >> >> url1 = 'http://www.url.com' >> url2 = 'http://www.url.com/page' >> >> If part of url1 is in url2, like above, I'd like to declare it a >> match. I'm sure this happens using a regular expression, but my >> experience is limited with them. >> >> The other problem is that I'm not going to be looking for just one >> url1, but I have an entire database table full of those to compare to >> an entire database table of url2. >> >> Any thoughts on approaching this problem are appreciated. > > It's not a complete answer, but in case it helps: String has an > include? method: > > url2.include?(url1) => true Using String#include? is much faster then regexp matching. Here are some benchmarks. I didn't test this with Oniguruma though, but I su -- START CODE -- require 'benchmark' url = "http://www.url.com/" url2 = "http://www.url.com/page" Benchmark.bm{ |x| x.report{ 100000.times { url2.include?( url ) } } x.report{ 100000.times { url2 =~ /#{url}/ } } } -- END CODE --- Benchmark Windows ruby 1.8.4 (2005-12-24) [i386-mswin32] C:\source\projects\ruby\strings>ruby temp.rb user system total real 0.080000 0.000000 0.080000 ( 0.080000) 1.722000 0.130000 1.852000 ( 1.873000) Benchmark Linux ruby 1.8.4 (2005-12-24) [i686-linux] zdennis@lima:~$ ruby-1.8.4 temp.rb user system total real 0.100000 0.000000 0.100000 ( 0.119403) 1.570000 0.040000 1.610000 ( 1.760446) Benchmark Linux ruby 1.8.3 (2005-06-23) [i486-linux] zdennis@lima:~$ ruby temp.rb user system total real 0.160000 0.030000 0.190000 ( 0.209436) 1.720000 0.080000 1.800000 ( 2.021754) Benchmark Linux ruby 1.8.2 (2005-04-11) [i386-linux] zdennis@jboss:~$ ruby temp.rb user system total real 0.000000 0.000000 0.000000 ( 0.246239) 0.000000 0.000000 0.000000 ( 1.401049) Zach