Junkone
January 25, 2008, 2:35pm
#1
my pattern should match either import or delete
However it does not seem to be working.
irb(main):014:0> pattern="([import]|[delete])"
=> “([import]|[delete])”
irb(main):015:0> pattern.match(“import”)
=> #MatchData:0x2e76f9c
irb(main):016:0> $1
=> nil
Junkone
January 25, 2008, 2:44pm
#2
Alle Friday 25 January 2008, Junkone ha scritto:
my pattern should match either import or delete
However it does not seem to be working.
irb(main):014:0> pattern="([import]|[delete])"
=> “([import]|[delete])”
irb(main):015:0> pattern.match(“import”)
=> #MatchData:0x2e76f9c
irb(main):016:0> $1
=> nil
I see two problems with your code:
if you want to check that a string (in your case, ‘import’) matches a
pattern, you need to use
string.match(pattern)
which, in your case, is
‘import’.match(pattern)
in a regexp, the construct [abc] means one character among ‘a’, ‘b’
or ‘c’,
not (as I guess you think) the string ‘abc’. Because of this, the string
‘i’
matches your pattern:
‘i’.match(pattern)
=> #MatchData:0xb7bbed44
To do what you want, you simply need:
pattern = “(import|delete”)
“import”.match pattern
=>#MatchData:0xb7bb7cb0
$1
=> “import”
I hope this helps
Stefano
Junkone
January 25, 2008, 2:48pm
#3
On Jan 25, 2008 2:34 PM, Junkone [email protected] wrote:
my pattern should match either import or delete
However it does not seem to be working.
irb(main):014:0> pattern="([import]|[delete])"
=> “([import]|[delete])”
irb(main):015:0> pattern.match(“import”)
=> #MatchData:0x2e76f9c
irb(main):016:0> $1
=> nil
Try this:
irb(main):004:0> pattern=/(import|delete)/
=> /(import|delete)/
irb(main):005:0> pattern.match “import”
=> #MatchData:0xb7cd1434
irb(main):006:0> $1
=> “import”
Pattern should be a regular expression. Also I think you don’t want
square brackets, because that means matching any one character in the
set, not the word.
Jesus.
Junkone
January 25, 2008, 2:48pm
#4
You don’t need parenthesis…
pattern = ‘import|delete’
=> “import|delete”
‘import’.match(pattern)[0]
=> “import”
‘delete’.match(pattern)[0]
=> “delete”
Regards,
Lee