import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:(?:(?:(3)\\.?([01]2))\\.?(\\d{1,4})?)|(?:(3)\\.?(1)\\.?([469]\\d?))|([1-2][0-9]|0?[1-9])\\.?(?:(1[0-2]|0?[1-9])\\.?(\\d{1,4})?|(0)?)|(?:(31)\\.?(?:(?:(0?[13578]|1[02])\\.?(\\d{1,4})?)|(0)?))|(?:(30)\\.?(?:(?:(0?[13456789]|1[0-2])\\.?(\\d{1,4})?)|(0)?))|([0-9]))$";
final String string = "0\n"
+ "000\n"
+ "00\n"
+ "1\n"
+ "001\n"
+ "01\n"
+ "2\n"
+ "002\n"
+ "02\n"
+ "3\n"
+ "003\n"
+ "03\n"
+ "4\n"
+ "004\n"
+ "04\n"
+ "5\n"
+ "005\n"
+ "05\n"
+ "6\n"
+ "006\n"
+ "06\n"
+ "7\n"
+ "007\n"
+ "07\n"
+ "8\n"
+ "008\n"
+ "08\n"
+ "9\n"
+ "009\n"
+ "09\n"
+ "10\n"
+ "010\n"
+ "11\n"
+ "011\n"
+ "12\n"
+ "012\n"
+ "13\n"
+ "013\n"
+ "14\n"
+ "014\n"
+ "15\n"
+ "015\n"
+ "16\n"
+ "016\n"
+ "17\n"
+ "017\n"
+ "18\n"
+ "018\n"
+ "19\n"
+ "019\n"
+ "20\n"
+ "020\n"
+ "21\n"
+ "021\n"
+ "22\n"
+ "022\n"
+ "23\n"
+ "023\n"
+ "24\n"
+ "024\n"
+ "25\n"
+ "025\n"
+ "26\n"
+ "026\n"
+ "27\n"
+ "027\n"
+ "28\n"
+ "028\n"
+ "29\n"
+ "029\n"
+ "30\n"
+ "030\n"
+ "31\n"
+ "031\n"
+ "32\n"
+ "032\n"
+ "33\n"
+ "033\n"
+ "34\n"
+ "034\n"
+ "35\n"
+ "035\n"
+ "36\n"
+ "036\n"
+ "37\n"
+ "037\n"
+ "38\n"
+ "038\n"
+ "39\n"
+ "039\n"
+ "40\n"
+ "040\n"
+ "41\n"
+ "041\n"
+ "42\n"
+ "042\n"
+ "43\n"
+ "043\n"
+ "44\n"
+ "044\n"
+ "45\n"
+ "045\n"
+ "46\n"
+ "046\n"
+ "47\n"
+ "047\n"
+ "48\n"
+ "048\n"
+ "49\n"
+ "049\n"
+ "50\n"
+ "050\n"
+ "51\n"
+ "051\n"
+ "52\n"
+ "052\n"
+ "53\n"
+ "053\n"
+ "54\n"
+ "054\n"
+ "55\n"
+ "055\n"
+ "56\n"
+ "056\n"
+ "57\n"
+ "057\n"
+ "58\n"
+ "058\n"
+ "59\n"
+ "059\n"
+ "60\n"
+ "060\n"
+ "61\n"
+ "061\n"
+ "62\n"
+ "062\n"
+ "63\n"
+ "063\n"
+ "64\n"
+ "064\n"
+ "65\n"
+ "065\n"
+ "66\n"
+ "066\n"
+ "67\n"
+ "067\n"
+ "68\n"
+ "068\n"
+ "69\n"
+ "069\n"
+ "70\n"
+ "070\n"
+ "71\n"
+ "071\n"
+ "72\n"
+ "072\n"
+ "73\n"
+ "073\n"
+ "74\n"
+ "074\n"
+ "75\n"
+ "075\n"
+ "76\n"
+ "076\n"
+ "77\n"
+ "077\n"
+ "78\n"
+ "078\n"
+ "79\n"
+ "079\n"
+ "80\n"
+ "080\n"
+ "81\n"
+ "081\n"
+ "82\n"
+ "082\n"
+ "83\n"
+ "083\n"
+ "84\n"
+ "084\n"
+ "85\n"
+ "085\n"
+ "86\n"
+ "086\n"
+ "87\n"
+ "087\n"
+ "88\n"
+ "088\n"
+ "89\n"
+ "089\n"
+ "90\n"
+ "090\n"
+ "91\n"
+ "091\n"
+ "92\n"
+ "092\n"
+ "93\n"
+ "093\n"
+ "94\n"
+ "094\n"
+ "95\n"
+ "095\n"
+ "96\n"
+ "096\n"
+ "97\n"
+ "097\n"
+ "98\n"
+ "098\n"
+ "99\n"
+ "099\n"
+ "100\n"
+ "101\n"
+ "102\n"
+ "103\n"
+ "104\n"
+ "105\n"
+ "106\n"
+ "107\n"
+ "108\n"
+ "109\n"
+ "110\n"
+ "111\n"
+ "112\n"
+ "113\n"
+ "114\n"
+ "115\n"
+ "116\n"
+ "117\n"
+ "118\n"
+ "119\n"
+ "120\n"
+ "121\n"
+ "122\n"
+ "123\n"
+ "124\n"
+ "125\n"
+ "126\n"
+ "127\n"
+ "128\n"
+ "129\n"
+ "130\n"
+ "131\n"
+ "132\n"
+ "133\n"
+ "134\n"
+ "135\n"
+ "136\n"
+ "137\n"
+ "138\n"
+ "139\n"
+ "140\n"
+ "141\n"
+ "142\n"
+ "143\n"
+ "144\n"
+ "145\n"
+ "146\n"
+ "147\n"
+ "148\n"
+ "149\n"
+ "150\n"
+ "151\n"
+ "152\n"
+ "153\n"
+ "154\n"
+ "155\n"
+ "156\n"
+ "157\n"
+ "158\n"
+ "159\n"
+ "160\n"
+ "161\n"
+ "162\n"
+ "163\n"
+ "164\n"
+ "165\n"
+ "166\n"
+ "167\n"
+ "168\n"
+ "169\n"
+ "170\n"
+ "171\n"
+ "172\n"
+ "173\n"
+ "174\n"
+ "175\n"
+ "176\n"
+ "177\n"
+ "178\n"
+ "179\n"
+ "180\n"
+ "181\n"
+ "182\n"
+ "183\n"
+ "184\n"
+ "185\n"
+ "186\n"
+ "187\n"
+ "188\n"
+ "189\n"
+ "190\n"
+ "191\n"
+ "192\n"
+ "193\n"
+ "194\n"
+ "195\n"
+ "196\n"
+ "197\n"
+ "198\n"
+ "199\n"
+ "200\n"
+ "201\n"
+ "202\n"
+ "203\n"
+ "204\n"
+ "205\n"
+ "206\n"
+ "207\n"
+ "208\n"
+ "209\n"
+ "210\n"
+ "211\n"
+ "212\n"
+ "213\n"
+ "214\n"
+ "215\n"
+ "216\n"
+ "217\n"
+ "218\n"
+ "219\n"
+ "220\n"
+ "221\n"
+ "222\n"
+ "223\n"
+ "224\n"
+ "225\n"
+ "226\n"
+ "227\n"
+ "228\n"
+ "229\n"
+ "230\n"
+ "231\n"
+ "232\n"
+ "233\n"
+ "234\n"
+ "235\n"
+ "236\n"
+ "237\n"
+ "238\n"
+ "239\n"
+ "240\n"
+ "241\n"
+ "242\n"
+ "243\n"
+ "244\n"
+ "245\n"
+ "246\n"
+ "247\n"
+ "248\n"
+ "249\n"
+ "250\n"
+ "251\n"
+ "252\n"
+ "253\n"
+ "254\n"
+ "255\n"
+ "256\n"
+ "257\n"
+ "258\n"
+ "259\n"
+ "260\n"
+ "261\n"
+ "262\n"
+ "263\n"
+ "264\n"
+ "265\n"
+ "266\n"
+ "267\n"
+ "268\n"
+ "269\n"
+ "270\n"
+ "271\n"
+ "272\n"
+ "273\n"
+ "274\n"
+ "275\n"
+ "276\n"
+ "277\n"
+ "278\n"
+ "279\n"
+ "280\n"
+ "281\n"
+ "282\n"
+ "283\n"
+ "284\n"
+ "285\n"
+ "286\n"
+ "287\n"
+ "288\n"
+ "289\n"
+ "290\n"
+ "291\n"
+ "292\n"
+ "293\n"
+ "294\n"
+ "295\n"
+ "296\n"
+ "297\n"
+ "298\n"
+ "299\n"
+ "300\n"
+ "301\n"
+ "302\n"
+ "303\n"
+ "304\n"
+ "305\n"
+ "306\n"
+ "307\n"
+ "308\n"
+ "309\n"
+ "310\n"
+ "311\n"
+ "312\n"
+ "313\n"
+ "314\n"
+ "315\n"
+ "316\n"
+ "317\n"
+ "318\n"
+ "319\n"
+ "320\n"
+ "321\n"
+ "322\n"
+ "323\n"
+ "324\n"
+ "325\n"
+ "326\n"
+ "327\n"
+ "328\n"
+ "329\n"
+ "330\n"
+ "331\n"
+ "332\n"
+ "333\n"
+ "334\n"
+ "335\n"
+ "336\n"
+ "337\n"
+ "338\n"
+ "339\n"
+ "340\n"
+ "341\n"
+ "342\n"
+ "343\n"
+ "344\n"
+ "345\n"
+ "346\n"
+ "347\n"
+ "348\n"
+ "349\n"
+ "350\n"
+ "351\n"
+ "352\n"
+ "353\n"
+ "354\n"
+ "355\n"
+ "356\n"
+ "357\n"
+ "358\n"
+ "359\n"
+ "360\n"
+ "361\n"
+ "362\n"
+ "363\n"
+ "364\n"
+ "365\n"
+ "366\n"
+ "367\n"
+ "368\n"
+ "369\n"
+ "370\n"
+ "371\n"
+ "372\n"
+ "373\n"
+ "374\n"
+ "375\n"
+ "376\n"
+ "377\n"
+ "378\n"
+ "379\n"
+ "380\n"
+ "381\n"
+ "382\n"
+ "383\n"
+ "384\n"
+ "385\n"
+ "386\n"
+ "387\n"
+ "388\n"
+ "389\n"
+ "390\n"
+ "391\n"
+ "392\n"
+ "393\n"
+ "394\n"
+ "395\n"
+ "396\n"
+ "397\n"
+ "398\n"
+ "399\n"
+ "400\n"
+ "401\n"
+ "402\n"
+ "403\n"
+ "404\n"
+ "405\n"
+ "406\n"
+ "407\n"
+ "408\n"
+ "409\n"
+ "410\n"
+ "411\n"
+ "412\n"
+ "413\n"
+ "414\n"
+ "415\n"
+ "416\n"
+ "417\n"
+ "418\n"
+ "419\n"
+ "420\n"
+ "421\n"
+ "422\n"
+ "423\n"
+ "424\n"
+ "425\n"
+ "426\n"
+ "427\n"
+ "428\n"
+ "429\n"
+ "430\n"
+ "431\n"
+ "432\n"
+ "433\n"
+ "434\n"
+ "435\n"
+ "436\n"
+ "437\n"
+ "438\n"
+ "439\n"
+ "440\n"
+ "441\n"
+ "442\n"
+ "443\n"
+ "444\n"
+ "445\n"
+ "446\n"
+ "447\n"
+ "448\n"
+ "449\n"
+ "450\n"
+ "451\n"
+ "452\n"
+ "453\n"
+ "454\n"
+ "455\n"
+ "456\n"
+ "457\n"
+ "458\n"
+ "459\n"
+ "460\n"
+ "461\n"
+ "462\n"
+ "463\n"
+ "464\n"
+ "465\n"
+ "466\n"
+ "467\n"
+ "468\n"
+ "469\n"
+ "470\n"
+ "471\n"
+ "472\n"
+ "473\n"
+ "474\n"
+ "475\n"
+ "476\n"
+ "477\n"
+ "478\n"
+ "479\n"
+ "480\n"
+ "481\n"
+ "482\n"
+ "483\n"
+ "484\n"
+ "485\n"
+ "486\n"
+ "487\n"
+ "488\n"
+ "489\n"
+ "490\n"
+ "491\n"
+ "492\n"
+ "493\n"
+ "494\n"
+ "495\n"
+ "496\n"
+ "497\n"
+ "498\n"
+ "499\n"
+ "500\n"
+ "501\n"
+ "502\n"
+ "503\n"
+ "504\n"
+ "505\n"
+ "506\n"
+ "507\n"
+ "508\n"
+ "509\n"
+ "510\n"
+ "511\n"
+ "512\n"
+ "513\n"
+ "514\n"
+ "515\n"
+ "516\n"
+ "517\n"
+ "518\n"
+ "519\n"
+ "520\n"
+ "521\n"
+ "522\n"
+ "523\n"
+ "524\n"
+ "525\n"
+ "526\n"
+ "527\n"
+ "528\n"
+ "529\n"
+ "530\n"
+ "531\n"
+ "532\n"
+ "533\n"
+ "534\n"
+ "535\n"
+ "536\n"
+ "537\n"
+ "538\n"
+ "539\n"
+ "540\n"
+ "541\n"
+ "542\n"
+ "543\n"
+ "544\n"
+ "545\n"
+ "546\n"
+ "547\n"
+ "548\n"
+ "549\n"
+ "550\n"
+ "551\n"
+ "552\n"
+ "553\n"
+ "554\n"
+ "555\n"
+ "556\n"
+ "557\n"
+ "558\n"
+ "559\n"
+ "560\n"
+ "561\n"
+ "562\n"
+ "563\n"
+ "564\n"
+ "565\n"
+ "566\n"
+ "567\n"
+ "568\n"
+ "569\n"
+ "570\n"
+ "571\n"
+ "572\n"
+ "573\n"
+ "574\n"
+ "575\n"
+ "576\n"
+ "577\n"
+ "578\n"
+ "579\n"
+ "580\n"
+ "581\n"
+ "582\n"
+ "583\n"
+ "584\n"
+ "585\n"
+ "586\n"
+ "587\n"
+ "588\n"
+ "589\n"
+ "590\n"
+ "591\n"
+ "592\n"
+ "593\n"
+ "594\n"
+ "595\n"
+ "596\n"
+ "597\n"
+ "598\n"
+ "599\n"
+ "600\n"
+ "601\n"
+ "602\n"
+ "603\n"
+ "604\n"
+ "605\n"
+ "606\n"
+ "607\n"
+ "608\n"
+ "609\n"
+ "610\n"
+ "611\n"
+ "612\n"
+ "613\n"
+ "614\n"
+ "615\n"
+ "616\n"
+ "617\n"
+ "618\n"
+ "619\n"
+ "620\n"
+ "621\n"
+ "622\n"
+ "623\n"
+ "624\n"
+ "625\n"
+ "626\n"
+ "627\n"
+ "628\n"
+ "629\n"
+ "630\n"
+ "631\n"
+ "632\n"
+ "633\n"
+ "634\n"
+ "635\n"
+ "636\n"
+ "637\n"
+ "638\n"
+ "639\n"
+ "640\n"
+ "641\n"
+ "642\n"
+ "643\n"
+ "644\n"
+ "645\n"
+ "646\n"
+ "647\n"
+ "648\n"
+ "649\n"
+ "650\n"
+ "651\n"
+ "652\n"
+ "653\n"
+ "654\n"
+ "655\n"
+ "656\n"
+ "657\n"
+ "658\n"
+ "659\n"
+ "660\n"
+ "661\n"
+ "662\n"
+ "663\n"
+ "664\n"
+ "665\n"
+ "666\n"
+ "667\n"
+ "668\n"
+ "669\n"
+ "670\n"
+ "671\n"
+ "672\n"
+ "673\n"
+ "674\n"
+ "675\n"
+ "676\n"
+ "677\n"
+ "678\n"
+ "679\n"
+ "680\n"
+ "681\n"
+ "682\n"
+ "683\n"
+ "684\n"
+ "685\n"
+ "686\n"
+ "687\n"
+ "688\n"
+ "689\n"
+ "690\n"
+ "691\n"
+ "692\n"
+ "693\n"
+ "694\n"
+ "695\n"
+ "696\n"
+ "697\n"
+ "698\n"
+ "699\n"
+ "700\n"
+ "701\n"
+ "702\n"
+ "703\n"
+ "704\n"
+ "705\n"
+ "706\n"
+ "707\n"
+ "708\n"
+ "709\n"
+ "710\n"
+ "711\n"
+ "712\n"
+ "713\n"
+ "714\n"
+ "715\n"
+ "716\n"
+ "717\n"
+ "718\n"
+ "719\n"
+ "720\n"
+ "721\n"
+ "722\n"
+ "723\n"
+ "724\n"
+ "725\n"
+ "726\n"
+ "727\n"
+ "728\n"
+ "729\n"
+ "730\n"
+ "731\n"
+ "732\n"
+ "733\n"
+ "734\n"
+ "735\n"
+ "736\n"
+ "737\n"
+ "738\n"
+ "739\n"
+ "740\n"
+ "741\n"
+ "742\n"
+ "743\n"
+ "744\n"
+ "745\n"
+ "746\n"
+ "747\n"
+ "748\n"
+ "749\n"
+ "750\n"
+ "751\n"
+ "752\n"
+ "753\n"
+ "754\n"
+ "755\n"
+ "756\n"
+ "757\n"
+ "758\n"
+ "759\n"
+ "760\n"
+ "761\n"
+ "762\n"
+ "763\n"
+ "764\n"
+ "765\n"
+ "766\n"
+ "767\n"
+ "768\n"
+ "769\n"
+ "770\n"
+ "771\n"
+ "772\n"
+ "773\n"
+ "774\n"
+ "775\n"
+ "776\n"
+ "777\n"
+ "778\n"
+ "779\n"
+ "780\n"
+ "781\n"
+ "782\n"
+ "783\n"
+ "784\n"
+ "785\n"
+ "786\n"
+ "787\n"
+ "788\n"
+ "789\n"
+ "790\n"
+ "791\n"
+ "792\n"
+ "793\n"
+ "794\n"
+ "795\n"
+ "796\n"
+ "797\n"
+ "798\n"
+ "799\n"
+ "800\n"
+ "801\n"
+ "802\n"
+ "803\n"
+ "804\n"
+ "805\n"
+ "806\n"
+ "807\n"
+ "808\n"
+ "809\n"
+ "810\n"
+ "811\n"
+ "812\n"
+ "813\n"
+ "814\n"
+ "815\n"
+ "816\n"
+ "817\n"
+ "818\n"
+ "819\n"
+ "820\n"
+ "821\n"
+ "822\n"
+ "823\n"
+ "824\n"
+ "825\n"
+ "826\n"
+ "827\n"
+ "828\n"
+ "829\n"
+ "830\n"
+ "831\n"
+ "832\n"
+ "833\n"
+ "834\n"
+ "835\n"
+ "836\n"
+ "837\n"
+ "838\n"
+ "839\n"
+ "840\n"
+ "841\n"
+ "842\n"
+ "843\n"
+ "844\n"
+ "845\n"
+ "846\n"
+ "847\n"
+ "848\n"
+ "849\n"
+ "850\n"
+ "851\n"
+ "852\n"
+ "853\n"
+ "854\n"
+ "855\n"
+ "856\n"
+ "857\n"
+ "858\n"
+ "859\n"
+ "860\n"
+ "861\n"
+ "862\n"
+ "863\n"
+ "864\n"
+ "865\n"
+ "866\n"
+ "867\n"
+ "868\n"
+ "869\n"
+ "870\n"
+ "871\n"
+ "872\n"
+ "873\n"
+ "874\n"
+ "875\n"
+ "876\n"
+ "877\n"
+ "878\n"
+ "879\n"
+ "880\n"
+ "881\n"
+ "882\n"
+ "883\n"
+ "884\n"
+ "885\n"
+ "886\n"
+ "887\n"
+ "888\n"
+ "889\n"
+ "890\n"
+ "891\n"
+ "892\n"
+ "893\n"
+ "894\n"
+ "895\n"
+ "896\n"
+ "897\n"
+ "898\n"
+ "899\n"
+ "900\n"
+ "901\n"
+ "902\n"
+ "903\n"
+ "904\n"
+ "905\n"
+ "906\n"
+ "907\n"
+ "908\n"
+ "909\n"
+ "910\n"
+ "911\n"
+ "912\n"
+ "913\n"
+ "914\n"
+ "915\n"
+ "916\n"
+ "917\n"
+ "918\n"
+ "919\n"
+ "920\n"
+ "921\n"
+ "922\n"
+ "923\n"
+ "924\n"
+ "925\n"
+ "926\n"
+ "927\n"
+ "928\n"
+ "929\n"
+ "930\n"
+ "931\n"
+ "932\n"
+ "933\n"
+ "934\n"
+ "935\n"
+ "936\n"
+ "937\n"
+ "938\n"
+ "939\n"
+ "940\n"
+ "941\n"
+ "942\n"
+ "943\n"
+ "944\n"
+ "945\n"
+ "946\n"
+ "947\n"
+ "948\n"
+ "949\n"
+ "950\n"
+ "951\n"
+ "952\n"
+ "953\n"
+ "954\n"
+ "955\n"
+ "956\n"
+ "957\n"
+ "958\n"
+ "959\n"
+ "960\n"
+ "961\n"
+ "962\n"
+ "963\n"
+ "964\n"
+ "965\n"
+ "966\n"
+ "967\n"
+ "968\n"
+ "969\n"
+ "970\n"
+ "971\n"
+ "972\n"
+ "973\n"
+ "974\n"
+ "975\n"
+ "976\n"
+ "977\n"
+ "978\n"
+ "979\n"
+ "980\n"
+ "981\n"
+ "982\n"
+ "983\n"
+ "984\n"
+ "985\n"
+ "986\n"
+ "987\n"
+ "988\n"
+ "989\n"
+ "990\n"
+ "991\n"
+ "992\n"
+ "993\n"
+ "994\n"
+ "995\n"
+ "996\n"
+ "997\n"
+ "998\n"
+ "999\n";
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