in reply to Re: Replacing numbers using regular expression
in thread Replacing numbers using regular expression
1234.
isn't what I think of as a number.
I would allow zero digits on the left side though.
.1234
seems ok by me. I think the 123 in
foo123foo
shouldn't be a number, so let's look for white space, or the beginning/end of the line before and after our match. The end check can be taken care of with lookahead (?=\s|$). Unfortunately you can't have variable length lookbehind, so (?<=\s|$) is impossible. So I just do (\s|^) and you should skip this register and take the next parenthesized group for your match.
Anyway we want to match all of these:
1234
1234.1234
.1234
but not
.
1234.
1234.1234.1234
.1234.1234
foo123foo
123.foo
foo.123
A regex that will do that is:
It's getting kind of hard to read, I realize, but it sits plays dead and fetches so...my $fixed_point_re = qr/(\s|^)((\d+(\.\d+)?)|(\.\d+))(?=\s|$)/;
Hope this helps!
Thomas.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: This checks there is at least one digit, among other things...
by Zaxo (Archbishop) on Dec 22, 2004 at 11:30 UTC | |
|