Hello I have a question about RegEx. I am currently trying to find a way to grab a substring of any letter followed by any two numbers such as: d09.
I came up with the R
There are three errors:
Your expression contains anchors. ^
matches only at the start of the string, and $
only matches at the end. So your regular expression will match "r30"
but not "foo_r30_bar"
. You are searching for a substring so you should remove the anchors.
The matches
should be find
.
You don't have a group 1 because you have no parentheses in your regular expression. Use group()
instead of group(1)
.
Try this:
Pattern pattern = Pattern.compile("[a-z][0-9]{2}");
Matcher matcher = pattern.matcher("sedfdhajkldsfakdsakvsdfasdfr30.reed.op.1xp0");
if(matcher.find()) {
System.out.println(matcher.group());
}
ideone
Matcher Documentation
A matcher is created from a pattern by invoking the pattern's matcher method. Once created, a matcher can be used to perform three different kinds of match operations:
- The matches method attempts to match the entire input sequence against the pattern.
- The lookingAt method attempts to match the input sequence, starting at the beginning, against the pattern.
- The find method scans the input sequence looking for the next subsequence that matches the pattern.