Pattern.compile("(?:([a-zA-Z][^\\-]*)-)?(?:\\d+-)?(\\d{14})");
There are two groups here:
group 1: ([a-zA-Z][^\\-]*)
group 2: (\\d{14})
Non-capturing groups are:
(?:([a-zA-Z][^\\-]*)-)
(?:\\d+-)
use '?:' to indicate non-capturing group:
regex pattern:
(?:X) X, as a non-capturing group