import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^([A-Z](([A-Z]{1,2}[a-z0-9]+)+([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{0,3})*|[A-Z]{1,2}))$|^([a-z][a-z0-9]*(([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{1,3})*|[A-Z]{1,3}))$";
final String string = "ABCD\n"
+ "ABCDE\n"
+ "MdeADFAFdsADFads\n"
+ "DeviceSNSD\n"
+ "AabcABCD\n"
+ "ABabcABCD\n"
+ "ABabcABCDabcABCD\n"
+ "ABCabcABCD\n"
+ "ABCabcABCDabcABCDabcABCDabcABCD\n"
+ "ABCDabcABCD\n"
+ "ABCDabcABCDabcABCDabcABCDabcABCD\n"
+ "HTMLParser\n"
+ "ContextHTMLParser\n"
+ "ABCDabcABC\n"
+ "ABCDabcAB\n"
+ "ABCDabcA\n"
+ "CamelCa_1\n"
+ "HELLO\n"
+ "snake_case\n"
+ "2PascalCase\n"
+ "streamIOIO\n"
+ "gREATERDtha\n"
+ "modeADFAFdsADFads\n"
+ "camelCa_1\n"
+ "contextHTMLParser\n"
+ "hELLO\n"
+ "AabcABCDabcABC\n"
+ "AabcABCDabcABCD\n"
+ "AabcABCabcABCD\n"
+ "ABabcABCDabcABC\n"
+ "ABabcABCDabcABCD\n"
+ "ABabcABCabcABCD\n"
+ "aBabcABCDabcABC\n"
+ "aBabcABCDabcABCD\n"
+ "aBabcABCabcABCD\n"
+ "ababcABCDabcABC\n"
+ "ababcABCDabcABCD\n"
+ "ababcABCabcABCD\n"
+ "SerialNO\n"
+ "serialNo\n"
+ "context\n"
+ "camelCasE\n"
+ "aGa\n"
+ "alphabet\n"
+ "serialNO\n"
+ "modeADFdsADFads\n"
+ "streamIO\n"
+ "aBCabcABCabcA\n"
+ "aBCabcA\n"
+ "aabc123\n"
+ "aabcABC\n"
+ "ab\n"
+ "abc\n"
+ "abcd\n"
+ "abcde\n"
+ "deviceSNS\n"
+ "pathASNs\n"
+ "dscpCP\n"
+ "awsVPC\n"
+ "deviceID\n"
+ "camelCasecamelCasecamelCasecamelCasecamelCasecamelCase\n"
+ "gREA1\n"
+ "gREAt\n"
+ "gREAtREAt\n"
+ "cP3\n"
+ "a1\n"
+ "aABC\n"
+ "a123\n"
+ "modeADFsADFads\n"
+ "a1G\n"
+ "aG\n"
+ "a\n"
+ "modeADFads\n"
+ "camelCase\n"
+ "lThan30DaysCount\n"
+ "lessThan30DaysCount\n"
+ "lessThan30DaysCountA\n"
+ "greaterThan30LessThan60DaysCount\n"
+ "greaterThan60LessThan90DaysCount\n"
+ "greaterThan90DaysCount\n"
+ "pascalCase\n"
+ "pascal2Case\n"
+ "pascalCaseA\n"
+ "pascal2CaseA\n"
+ "modeA\n"
+ "mode2A\n"
+ "mode2A2\n"
+ "mode2A2A\n"
+ "createAMode\n"
+ "createBMode\n"
+ "madeEasy\n"
+ "wonderFul\n"
+ "andMe\n"
+ "htmlParser\n"
+ "h\n"
+ "aaA\n"
+ "camel01C\n"
+ "camel01c01\n"
+ "camel01C01\n"
+ "camel01CC01\n"
+ "camel0a1c1\n"
+ "camel0a1C1\n"
+ "camel0ac1b1C1\n"
+ "camelC\n"
+ "camelC1\n"
+ "camelCA\n"
+ "camelCa1\n"
+ "ibsReleaseTestVerificationRegressionSuite\n"
+ "ibsReleaseTestVerificationRegressioNSuite\n"
+ "ibsReleaseTestVerificationRegressioN\n"
+ "xmlHttpRequest\n"
+ "newCustomerId\n"
+ "innerStopwatch\n"
+ "supportsIpv6OnIos\n"
+ "youTubeImporter\n"
+ "youtubeImporter\n"
+ "affine3D\n"
+ "Ag\n"
+ "ABCabcABCabc\n"
+ "AwsVPC\n"
+ "AaABC\n"
+ "PacalCasePacalCasePacalCasePacalCasePacalCasePacalCase\n"
+ "AabcABCabcABC\n"
+ "MoeADFdsADFads\n"
+ "ABCabcABC\n"
+ "ABCabcAB\n"
+ "ABabcABC\n"
+ "ABabcAB\n"
+ "AabcAB\n"
+ "ABCabcABCabcA\n"
+ "ABCabcA\n"
+ "Aabc123\n"
+ "AabcABC\n"
+ "A\n"
+ "AB\n"
+ "ABC\n"
+ "StreamIO\n"
+ "IOStream\n"
+ "DeviceID\n"
+ "DeviceSNS\n"
+ "Context\n"
+ "PascalCase\n"
+ "Pascal2Case\n"
+ "PascalCaseA\n"
+ "Pascal2CaseA\n"
+ "ModeA\n"
+ "Mode2A\n"
+ "Mode2A2\n"
+ "Mode2A2A\n"
+ "CreateAMode\n"
+ "CreateBMode\n"
+ "MadeEasy\n"
+ "WonderFul\n"
+ "AndMe\n"
+ "HtmlParser\n"
+ "H\n"
+ "AaA\n"
+ "Camel01C\n"
+ "Camel01c01\n"
+ "Camel01C01\n"
+ "Camel01CC01\n"
+ "Camel0a1c1\n"
+ "Camel0a1C1\n"
+ "Camel0ac1b1C1\n"
+ "CamelC\n"
+ "CamelC1\n"
+ "CamelCA\n"
+ "CamelCa1\n"
+ "IbsReleaseTestVerificationRegressionSuite\n"
+ "IbsReleaseTestVerificationRegressioNSuite\n"
+ "IbsReleaseTestVerificationRegressioN\n"
+ "XmlHttpRequest\n"
+ "NewCustomerId\n"
+ "InnerStopwatch\n"
+ "SupportsIpv6OnIos\n"
+ "YouTubeImporter\n"
+ "YoutubeImporter\n"
+ "Affine3D";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html