Regexp issue

Hi All,
        I have an issue in parsing regular expression and im new to
regexp.
Varaiable = "Internation tip ($25 fee)"
The $25 might vary each time, it might be $5, $ 10 so on

I tried doing something like this which didnt work, kindly help
variable = "Internation tip (regexp:$[0-9][0-9]+ fee)"
i want the regular expression to aid both single digit or multi digit
currency.

Cheers

···

--
Posted via http://www.ruby-forum.com/.

The $, ( and ) characters have special meaning in a regexp:
* $ means the end of the line
* ( opens a group
* ) closes a group
To match a literal $, ( or ) you have to escape them with a backslash. This
should work:

reg = /Internation tip \(\$\d{1,2} fee\)/

I hope this helps

Stefano

···

On Friday 08 October 2010, Idealone Ideally wrote:

>Hi All,
> I have an issue in parsing regular expression and im new to
>regexp.
> Varaiable = "Internation tip ($25 fee)"
>The $25 might vary each time, it might be $5, $ 10 so on
>
>I tried doing something like this which didnt work, kindly help
>variable = "Internation tip (regexp:$[0-9][0-9]+ fee)"
>i want the regular expression to aid both single digit or multi digit
>currency.
>
>Cheers

Idealone Ideally wrote:

Hi All,
        I have an issue in parsing regular expression and im new to
regexp.
Varaiable = "Internation tip ($25 fee)"
The $25 might vary each time, it might be $5, $ 10 so on

I tried doing something like this which didnt work, kindly help
variable = "Internation tip (regexp:$[0-9][0-9]+ fee)"
i want the regular expression to aid both single digit or multi digit
currency.

Cheers

As Stefano Crocco pointed out $,(,) must be escaped.
To allow any number of digits, and at least 1 use \d{1,).
Moreover you must match different descriptions and check for null
values.
Example:

var =["Internation tip1 ($9 fee)","Internation tip2 ($25 fee)",
      "Internation tip3 ($350 fee)","Internation tip3 ($5000 fee)",
      "Internation tip5"]

rx =/.+(\(\$*\d{1,}\s+fee\)).*/i

fmt= "%-30s %6s\n"
var.each do |str|
    if( m=rx.match(str) )
        printf fmt , str, m[1] # m[1]=first sub-expression
        else printf fmt, str,'Null Value'
    end #if
end #do

HTH gfb

···

--
Posted via http://www.ruby-forum.com/\.

Hi All,
I have an issue in parsing regular expression and im new to
regexp.
Varaiable = "Internation tip ($25 fee)"

First of all, "Variable" is a constant. You need to make the name
start with a lowercase letter.

The $25 might vary each time, it might be $5, $ 10 so on

I tried doing something like this which didnt work, kindly help
variable = "Internation tip (regexp:$[0-9][0-9]+ fee)"
i want the regular expression to aid both single digit or multi digit
currency.

There is a simple approach and a more robust approach:

irb(main):008:0> v = "Internation tip ($25 fee)"
=> "Internation tip ($25 fee)"
irb(main):009:0> v[/\d+/].to_i
=> 25
irb(main):010:0> v[/\AInternation tip \(\$(\d+) fee\)\z/, 1].to_i
=> 25

The first regexp extracts any number, i.e. this works with differently
formatted strings as long as there is at least one digit somewhere.
The second one checks that your string actually follows the pattern
you described.

Kind regards

robert

···

On Fri, Oct 8, 2010 at 8:40 AM, Idealone Ideally <shekarls@gmail.com> wrote:

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

I think what you would want is :

\$[0-9]{1,} fee

'\$' says that you are looking for the '$' character not the end of the line...which is what I think you are looking for. Then you have the [0-9]{1,} which says that you are looking for at least one number, but that there could be more. This should work for you, but you can also check out these links :

---- Idealone Ideally <shekarls@gmail.com> wrote:

···

Hi All,
        I have an issue in parsing regular expression and im new to
regexp.
Varaiable = "Internation tip ($25 fee)"
The $25 might vary each time, it might be $5, $ 10 so on

I tried doing something like this which didnt work, kindly help
variable = "Internation tip (regexp:$[0-9][0-9]+ fee)"
i want the regular expression to aid both single digit or multi digit
currency.

Cheers
--
Posted via http://www.ruby-forum.com/\.

if you just want to match the currency including the brackets, the following reg-ex should do:

/\(\$\d+.*\)/

where

.* means match zero or more characters
the '.' matches any single character
the '*' mean zero or more

···

On 10-10-08 02:53 AM, Stefano Crocco wrote:

On Friday 08 October 2010, Idealone Ideally wrote:

>Hi All,
> I have an issue in parsing regular expression and im new to
>regexp.
> Varaiable = "Internation tip ($25 fee)"
>The $25 might vary each time, it might be $5, $ 10 so on
>
>I tried doing something like this which didnt work, kindly help
>variable = "Internation tip (regexp:$[0-9][0-9]+ fee)"
>i want the regular expression to aid both single digit or multi digit
>currency.
>
>Cheers

The $, ( and ) characters have special meaning in a regexp:
* $ means the end of the line
* ( opens a group
* ) closes a group
To match a literal $, ( or ) you have to escape them with a backslash. This
should work:

reg = /Internation tip \(\$\d{1,2} fee\)/

I hope this helps

Stefano

--
Kind Regards,
Rajinder Yadav

unknown wrote:

[0-9]{1,} which says that you are looking for at least one number, but
that there could be more.

\d+ is a more concise way to write that.

\d => digit [0-9]
* suffix => 0 or more instances
+ suffix => 1 or more instances
? suffix => 0 or 1 instances

···

--
Posted via http://www.ruby-forum.com/\.

Instead of [0-9] you can type \d and instead of {1,} you can type + - much less hassle. :slight_smile:

And then of course you also need a capturing group to get at the digits.

Cheers

  robert

···

On 08.10.2010 16:55, seanh1313@tx.rr.com wrote:

I think what you would want is :

\$[0-9]{1,} fee

'\$' says that you are looking for the '$' character not the end of
the line...which is what I think you are looking for. Then you have
the [0-9]{1,} which says that you are looking for at least one
number, but that there could be more. This should work for you, but
you can also check out these links :

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/