Link to home
Start Free TrialLog in
Avatar of pcarrollnf
pcarrollnf

asked on

Java RegEx Question

I want to build a regular expression that will let me know if a standalone 0 is in the string.  For example, I have the following string:

1 3 10 88 100 0 56
OR
0 4 10 20 45 1000
OR
2 10 44 60 100 0

The regular expression should return true on a match for a standalone 0.  However the string below should return false:

10 35 40 100

Thanks.
Avatar of Tommy Braas
Tommy Braas
Flag of Australia image

" 0 "
Note the spaces on either side of the 0
Avatar of CEHJ
Pattern p = Pattern.compile("\\s+?0\\s+?");
Matcher m = p.matcher(input);
boolean gotLoneZero = m.find();
Avatar of pcarrollnf
pcarrollnf

ASKER

That doesn't appear to work.  You have to also keep in mind that the 0 may be the first digit in the string where it will not have any leading spaces and it may be the last digit where it will not have trailing spaces.  It also may be a part of another number such as 10 where it is valid.  So I guess there are 3 scenarios that should fail:

0 1 2
1 2 0
1 0 2

Each number will have a space before the next number unless it is the last one in the string.
ASKER CERTIFIED SOLUTION
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Pattern p = Pattern.compile("\\s+?0\\s+?");
Matcher m = p.matcher(" "+input+" ");
boolean foundit = m.find();
"(^0 | 0 | 0$)"
Identical to mine - only less tolerant of number of spaces
8-)
> Identical to mine - only less tolerant of number of spaces

Identical but functions differently, interesting concept :-D