Paul Battley
6/19/2007 10:17:00 AM
On 19/06/07, geetha <sangeetha.geethu05@gmail.com> wrote:
> I am having one file . In that file more than 100 lines are there.
> I have to search some three words . The first two words there in first line
> and the another one word is there in
> another one line means How can I match that 3 words.
It was very difficult to parse your question. I think what you meant is this:
'Given a multi-line string, how do I search for a sequence of words
that spans multiple lines?'
E.g. for the string
haystack = "blah blah blah string\nto find blah blah blah"
a regular expression to match this might be
/\bstring\s+to\s+find\b/
Given a search string that's just a sequence of words
search_string = "string to find"
we can construct a regular expression to match it:
regexp = Regexp.new("\\b" + search_string.split.map{ |word|
Regexp.escape(word) }.join("\\s+") + "\\b")
# => /\bstring\s+to\s+find\b/
and search using normal methods:
haystack =~ regexp # => 15
Of course, for a real text search, you'll probably want to do some
stemming and normalisation, but I don't think that's what you were
asking about.
Does that help?
Paul.