Java Regular Expression: match any number of digits in round brackets if the closing bracket is the last char in the String

StackOverflow https://stackoverflow.com/questions/20846895

  •  22-09-2022
  •  | 
  •  

Question

I need some help to save my day (or my night). I would like to match:

  1. Any number of digits
  2. Enclosed by round brackets "()" [The brackets contain nothing else than digits]
  3. If the closing bracket ")" is the last character in the String.

Here's the code I have come up with:

// this how the text looks, the part I want to match are the digits in the brackets at the end of it
    String text = "Some text 45 Some text, text and text (1234)";  
    String regex = "[no idea how to express this.....]"; // this is where the regex should be
            Pattern regPat = Pattern.compile(regex);
            Matcher matcher = regPat.matcher(text);

            String matchedText = "";

            if (matcher.find()) {
                matchedText = matcher.group();
            }

Please help me out with the magic expression I have only managed to match any number of digits, but not if they are enclosed in brackets and are at the end of the line...

Thanks!

Was it helpful?

Solution

You can try this regex:

String regex = "\\(\\d+\\)$";

OTHER TIPS

If you need to extract just the digits, you can use this regex:

String regex = "\\((\\d+)\\)$";

and get the value of matcher.group(1). (Explanation: The ( and ) characters preceded by backslashes match the round brackets literally; the ( and ) characters not preceded by backslashes tell the matcher that the part inside, i.e. just the digits, form a capture group, and the part matching the group can be obtained by matcher.group(1), since this is the first, and only, capture group in the regex.)

This is the required regex for your condition

\\(\\d+\\)$
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top