I have files in the format *C:\Temp\myfile_124.txt*
I need a regular expression which will give me just the number “124” that is whatever is there after the underscore and before the extension.
I tried a number of ways, latest is
(.+[0-9]{18,})(_[0-9]+)?\\.txt$
I am not getting the desired output. Can someone tell me what is wrong?
Matcher matcher = FILE_NAME_PATTERN.matcher(filename);
if (matcher.matches() && matcher.groupCount() == 2) {
try {
String index = matcher.group(2);
if (index != null) {
return Integer.parseInt(index.substring(1));
}
}
catch (NumberFormatException e) {
}
The first part
[0-9]{18,}states you have atleast 18 digits which you don’t have.Usually with regex its a good idea to make the expression as simple as possible. I suggest trying
Note: you have to call find() to make it perform the lookup, otherwise it says “No match found”
This example
prints