code: @Nullable
    public static String [] getAllMatchingGroupValues (@Nonnull @RegEx final String sRegEx, @Nonnull final String sValue)
    {
      final Matcher aMatcher = getMatcher (sRegEx, sValue);
      if (!aMatcher.find ())
      {
        // Values does not match RegEx
        return null;
      }
  
      // groupCount is excluding the .group(0) match!!!
      final int nGroupCount = aMatcher.groupCount ();
      final String [] ret = new String [nGroupCount];
      for (int i = 0; i < nGroupCount; ++i)
        ret[i] = aMatcher.group (i + 1);
      return ret;
    }
docs: Get the values of all groups (RegEx <code>(...)</code>) for the passed
  value.<br>
  Note: groups starting with "?:" are non-capturing groups (e.g.
  <code>(?:a|b)</code>)
  
  @param sRegEx
  The regular expression containing the groups
  @param sValue
  The value to check
  @return <code>null</code> if the passed value does not match the regular
  expression. An empty array if the regular expression contains no
  capturing group.