the Regular exp read from file not matching !!

J

Jayan Jacob

I am trying to read the syntax(here the regular expression) frpm a file.

When I use /^[0-1]{1}$/ with "1" as subject it works but
/^[0-1]{1}[a-zA-Z]{1,25}$/ syntax for "1,abcd" , I have checked out on
the interpreter directly both works fine. I suppose I am messing up
something with the files, or gets or chomp or ..

Any help ?



def sanity_check(param)
filename = create_filename("Syntax",param) #this fn gets a
valid file name
if File.exist?(filename)
File.open(filename,"r+") do |syntaxfile|
syntax = syntaxfile.gets.chomp
return syntax.match(@newsettings.value)
end
end
return true # RETURN TRUE IF SYNTAX FILE NOT FOUND
end

==============================================================================

setprm_0.1.2.rb:149: return value
(rdb:1) v l
filename => "C:\\rubypgm\\Paramsyntax\\prm.102"
param => "102"
syntax => "/^[0-1]{1}[a-zA-Z]{1,25}$/"
value => nil
(rdb:1) n
setprm_0.1.2.rb:85: update_status(("\n Incorrect syntax ,
File not up
 
S

Sandor Szücs

When I use /^[0-1]{1}$/ with "1" as subject it works but
/^[0-1]{1}[a-zA-Z]{1,25}$/ syntax for "1,abcd" , I have checked out on
the interpreter directly both works fine. I suppose I am messing up
something with the files, or gets or chomp or ..

Any help ?


That RegEx: /^[0-1]{1}[a-zA-Z]{1,25}$/ doesn't match ','.

maybe: add ','
irb> regex2=3D/^[0-1]{1},[a-zA-Z]{1,25}$/
=3D> /^[0-1]{1},[a-zA-Z]{1,25}$/
irb> regex2.match "1,abcd"
=3D> #<MatchData "1,abcd">

or '.?'
irb> regex3=3D/^[0-1]{1}.?[a-zA-Z]{1,25}$/
=3D> /^[0-1]{1}.?[a-zA-Z]{1,25}$/
irb> regex3.match "1,abcd"
=3D> #<MatchData "1,abcd">

hth. regards, Sandor Sz=FCcs
--=
 
J

Jay Jkb

Sorry for the typo error in the earlier mail , I did try "1abcd" on
/^[0-1]{1}[a-zA-Z]{1,25}$/. I am putting a regular expression in a file
and my program picks up this string to do a match with the input an
string ==> "syntax.match(@newsettings.value)"

here is the debug info for more clarity

(rdb:1) n
setprm_0.1.2.rb:149: return value
(rdb:1) v l
filename => "C:\\rubypgm\\Paramsyntax\\prm.102"
newsettings => "1abcd"
param => "102"
syntax => "/^[0-1]{1}[a-zA-Z]{1,25}$/"
syntaxfile => #<File:C:\rubypgm\Paramsyntax\prm.102>
value => nil
(rdb:1) l
[144, 153] in setprm_0.1.2.rb
144 if File.exist?(filename)
145 File.open(filename,"r+") do |syntaxfile|
146 syntax = syntaxfile.gets.chomp
147 newsettings = @newsettings.value
148 value = syntax.match(newsettings)
=> 149 return value
150 end
151 end
152 return true # RETURN TRUE IF SYNTAX FILE NOT
FOUND
153 end



thanks
jn






Jay said:
I am trying to read the syntax(here the regular expression) frpm a file.

When I use /^[0-1]{1}$/ with "1" as subject it works but
/^[0-1]{1}[a-zA-Z]{1,25}$/ syntax for "1,abcd" , I have checked out on
the interpreter directly both works fine. I suppose I am messing up
something with the files, or gets or chomp or ..

Any help ?



def sanity_check(param)
filename = create_filename("Syntax",param) #this fn gets a
valid file name
if File.exist?(filename)
File.open(filename,"r+") do |syntaxfile|
syntax = syntaxfile.gets.chomp
return syntax.match(@newsettings.value)
end
end
return true # RETURN TRUE IF SYNTAX FILE NOT FOUND
end

==============================================================================

setprm_0.1.2.rb:149: return value
(rdb:1) v l
filename => "C:\\rubypgm\\Paramsyntax\\prm.102"
param => "102"
syntax => "/^[0-1]{1}[a-zA-Z]{1,25}$/"
value => nil
(rdb:1) n
setprm_0.1.2.rb:85: update_status(("\n Incorrect syntax ,
File not up
 
J

Jay Jkb

I replaced the code with
return /#{syntaxfile.gets.chomp}/.match(@newsettings.value)
and it worked. for some reason when i assign it to the variable syntax
and then use it id does not work ..

some explanation on why? , would be great .

thanx
Jn


Jay said:
I am trying to read the syntax(here the regular expression) frpm a file.

When I use /^[0-1]{1}$/ with "1" as subject it works but
/^[0-1]{1}[a-zA-Z]{1,25}$/ syntax for "1,abcd" , I have checked out on
the interpreter directly both works fine. I suppose I am messing up
something with the files, or gets or chomp or ..

Any help ?



def sanity_check(param)
filename = create_filename("Syntax",param) #this fn gets a
valid file name
if File.exist?(filename)
File.open(filename,"r+") do |syntaxfile|
syntax = syntaxfile.gets.chomp
return syntax.match(@newsettings.value)
end
end
return true # RETURN TRUE IF SYNTAX FILE NOT FOUND
end

==============================================================================

setprm_0.1.2.rb:149: return value
(rdb:1) v l
filename => "C:\\rubypgm\\Paramsyntax\\prm.102"
param => "102"
syntax => "/^[0-1]{1}[a-zA-Z]{1,25}$/"
value => nil
(rdb:1) n
setprm_0.1.2.rb:85: update_status(("\n Incorrect syntax ,
File not up
 
S

Sandor Szücs

some explanation on why? , would be great .

In my opinion it's a String vs. RegExp problem.

Your rdebug output said that your syntax variable was a String, or?:
(rdb:1) v l
filename =3D> "C:\\rubypgm\\Paramsyntax\\prm.102"
newsettings =3D> "1abcd"
param =3D> "102"
syntax =3D> "/^[0-1]{1}[a-zA-Z]{1,25}$/"

syntax has doublequotes and is a String here (maybe a hint or just =20
output?).

However if you read from file you get a String not an Regexp you want to
have a new Regexp so you have to use Regexp.new or /"string"/.

In a test the String don't match like a Regexp:

irb> syntax=3D"/^[0-1]{1}[a-zA-Z]{1,25}$/"
irb> newsettings=3D"1abcd"
irb> syntax.match(newsettings) =3D> nil
irb> syntax2=3D/^[0-1]{1}[a-zA-Z]{1,25}$/
irb> syntax2.match(newsettings) =3D> #<MatchData "1abcd">

you want:
irb> Regexp.new("/^[0-1]{1}[a-zA-Z]{1,25}$/") =3D> /\/^[0-1]{1}[a-zA-Z]=20=

{1,25}$\//

or what you did:
/#{syntaxfile.gets.chomp}/.match(@newsettings.value)


It's a Regexp so it works as expected.

hth. regards, Sandor Sz=FCcs
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,045
Latest member
DRCM

Latest Threads

Top