ruby prints out variable line and say its a RegexpError
‘empty range in character class’ as if it interprets line as a Regexp
What am I doing wrong? There are a lot of strange characters in
variable line,
maybe that is the issue?
ruby prints out variable line and say its a RegexpError
‘empty range in character class’ as if it interprets line as a Regexp
What am I doing wrong? There are a lot of strange characters in variable line,
maybe that is the issue?
I’m not sure about the issue, but the usual idiom for this is:
File.foreach(“filename.dat”) do |line|
line.match(/ruby/)
end
This way:
The file handler is automatically closed for you, you don’t have to
ensure that you call close on it, it’s done for you.
You only have one line at a time in memory, since that seems to be
your unit of data. If the file is huge it will make a difference in
the amount of memory you will consume at a time.
In any case, String#match calls Regexp#match, so calling match on one
or the other should make no difference. Can you show a small example
of a file that breaks?
ruby prints out variable line and say its a RegexpError
‘empty range in character class’ as if it interprets line as a Regexp
What am I doing wrong? There are a lot of strange characters in variable
line,
maybe that is the issue?
I found out what I was doing the wrong way…
I’m reading the search pattern with readline
and I wrote it -->/ruby/
That didnt make it a Regexp.
Now I found that if I write it -->ruby
and then
pattern=Regexp.new(input_str) it works…
ruby prints out variable line and say its a RegexpError
‘empty range in character class’ as if it interprets line as a Regexp
What am I doing wrong? There are a lot of strange characters in variable
line,
maybe that is the issue?
You must have a different regular expression in your test other than
/ruby/ because that is valid:
irb(main):001:0> m = /ruby/.match “text”
=> nil
irb(main):002:0> m = /ruby/.match “ruby”
=> #<MatchData “ruby”>
I found out what I was doing the wrong way…
I’m reading the search pattern with readline
and I wrote it -->/ruby/
That didnt make it a Regexp.
This is not true. The sequence /ruby/ is a valid regular expression.