import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:([0-1])|(2)|(3))(?(1)[0-9])(?(2)(?:([0-8])|(9)))(?(3)[0-1])\\/(?:(01|03|05|07|09|11)|(04|06|08|10|12)|(02))(?(3)(?(8)(?!)))\\/(?:(04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)|(\\d\\d))(?:(00)|(04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)|\\d{2})(?(2)(?(5)(?(8)(?(11)(?(9)|(?!))|(?(12)|(?!))))))";
final String string = "29/02/1200\n"
+ "29/02/1400\n"
+ "01/01/1999\n"
+ "02/01/1999\n"
+ "03/01/1999\n"
+ "04/01/1999\n"
+ "05/01/1999\n"
+ "06/01/1999\n"
+ "07/01/1999\n"
+ "08/01/1999\n"
+ "09/01/1999\n"
+ "10/01/1999\n"
+ "11/01/1999\n"
+ "12/01/1999\n"
+ "13/01/1999\n"
+ "14/01/1999\n"
+ "15/01/1999\n"
+ "16/01/1999\n"
+ "17/01/1999\n"
+ "18/01/1999\n"
+ "19/01/1999\n"
+ "20/01/1999\n"
+ "21/01/1999\n"
+ "22/01/1999\n"
+ "23/01/1999\n"
+ "24/01/1999\n"
+ "25/01/1999\n"
+ "26/01/1999\n"
+ "27/01/1999\n"
+ "28/01/1999\n"
+ "29/01/1999\n"
+ "30/01/1999\n"
+ "31/01/1999\n"
+ "01/02/1999\n"
+ "02/02/1999\n"
+ "03/02/1999\n"
+ "04/02/1999\n"
+ "05/02/1999\n"
+ "06/02/1999\n"
+ "07/02/1999\n"
+ "08/02/1999\n"
+ "09/02/1999\n"
+ "10/02/1999\n"
+ "11/02/1999\n"
+ "12/02/1999\n"
+ "13/02/1999\n"
+ "14/02/1999\n"
+ "15/02/1999\n"
+ "16/02/1999\n"
+ "17/02/1999\n"
+ "18/02/1999\n"
+ "19/02/1999\n"
+ "20/02/1999\n"
+ "21/02/1999\n"
+ "22/02/1999\n"
+ "23/02/1999\n"
+ "24/02/1999\n"
+ "25/02/1999\n"
+ "26/02/1999\n"
+ "27/02/1999\n"
+ "28/02/1999\n"
+ "01/03/1999\n"
+ "02/03/1999\n"
+ "03/03/1999\n"
+ "04/03/1999\n"
+ "05/03/1999\n"
+ "06/03/1999\n"
+ "07/03/1999\n"
+ "08/03/1999\n"
+ "09/03/1999\n"
+ "10/03/1999\n"
+ "11/03/1999\n"
+ "12/03/1999\n"
+ "13/03/1999\n"
+ "14/03/1999\n"
+ "15/03/1999\n"
+ "16/03/1999\n"
+ "17/03/1999\n"
+ "18/03/1999\n"
+ "19/03/1999\n"
+ "20/03/1999\n"
+ "21/03/1999\n"
+ "22/03/1999\n"
+ "23/03/1999\n"
+ "24/03/1999\n"
+ "25/03/1999\n"
+ "26/03/1999\n"
+ "27/03/1999\n"
+ "28/03/1999\n"
+ "29/03/1999\n"
+ "30/03/1999\n"
+ "31/03/1999\n"
+ "01/04/1999\n"
+ "02/04/1999\n"
+ "03/04/1999\n"
+ "04/04/1999\n"
+ "05/04/1999\n"
+ "06/04/1999\n"
+ "07/04/1999\n"
+ "08/04/1999\n"
+ "09/04/1999\n"
+ "10/04/1999\n"
+ "11/04/1999\n"
+ "12/04/1999\n"
+ "13/04/1999\n"
+ "14/04/1999\n"
+ "15/04/1999\n"
+ "16/04/1999\n"
+ "17/04/1999\n"
+ "18/04/1999\n"
+ "19/04/1999\n"
+ "20/04/1999\n"
+ "21/04/1999\n"
+ "22/04/1999\n"
+ "23/04/1999\n"
+ "24/04/1999\n"
+ "25/04/1999\n"
+ "26/04/1999\n"
+ "27/04/1999\n"
+ "28/04/1999\n"
+ "29/04/1999\n"
+ "30/04/1999\n"
+ "01/05/1999\n"
+ "02/05/1999\n"
+ "03/05/1999\n"
+ "04/05/1999\n"
+ "05/05/1999\n"
+ "06/05/1999\n"
+ "07/05/1999\n"
+ "08/05/1999\n"
+ "09/05/1999\n"
+ "10/05/1999\n"
+ "11/05/1999\n"
+ "12/05/1999\n"
+ "13/05/1999\n"
+ "14/05/1999\n"
+ "15/05/1999\n"
+ "16/05/1999\n"
+ "17/05/1999\n"
+ "18/05/1999\n"
+ "19/05/1999\n"
+ "20/05/1999\n"
+ "21/05/1999\n"
+ "22/05/1999\n"
+ "23/05/1999\n"
+ "24/05/1999\n"
+ "25/05/1999\n"
+ "26/05/1999\n"
+ "27/05/1999\n"
+ "28/05/1999\n"
+ "29/05/1999\n"
+ "30/05/1999\n"
+ "31/05/1999\n"
+ "01/06/1999\n"
+ "02/06/1999\n"
+ "03/06/1999\n"
+ "04/06/1999\n"
+ "05/06/1999\n"
+ "06/06/1999\n"
+ "07/06/1999\n"
+ "08/06/1999\n"
+ "09/06/1999\n"
+ "10/06/1999\n"
+ "11/06/1999\n"
+ "12/06/1999\n"
+ "13/06/1999\n"
+ "14/06/1999\n"
+ "15/06/1999\n"
+ "16/06/1999\n"
+ "17/06/1999\n"
+ "18/06/1999\n"
+ "19/06/1999\n"
+ "20/06/1999\n"
+ "21/06/1999\n"
+ "22/06/1999\n"
+ "23/06/1999\n"
+ "24/06/1999\n"
+ "25/06/1999\n"
+ "26/06/1999\n"
+ "27/06/1999\n"
+ "28/06/1999\n"
+ "29/06/1999\n"
+ "30/06/1999\n"
+ "01/07/1999\n"
+ "02/07/1999\n"
+ "03/07/1999\n"
+ "04/07/1999\n"
+ "05/07/1999\n"
+ "06/07/1999\n"
+ "07/07/1999\n"
+ "08/07/1999\n"
+ "09/07/1999\n"
+ "10/07/1999\n"
+ "11/07/1999\n"
+ "12/07/1999\n"
+ "13/07/1999\n"
+ "14/07/1999\n"
+ "15/07/1999\n"
+ "16/07/1999\n"
+ "17/07/1999\n"
+ "18/07/1999\n"
+ "19/07/1999\n"
+ "20/07/1999\n"
+ "21/07/1999\n"
+ "22/07/1999\n"
+ "23/07/1999\n"
+ "24/07/1999\n"
+ "25/07/1999\n"
+ "26/07/1999\n"
+ "27/07/1999\n"
+ "28/07/1999\n"
+ "29/07/1999\n"
+ "30/07/1999\n"
+ "31/07/1999\n"
+ "01/08/1999\n"
+ "02/08/1999\n"
+ "03/08/1999\n"
+ "04/08/1999\n"
+ "05/08/1999\n"
+ "06/08/1999\n"
+ "07/08/1999\n"
+ "08/08/1999\n"
+ "09/08/1999\n"
+ "10/08/1999\n"
+ "11/08/1999\n"
+ "12/08/1999\n"
+ "13/08/1999\n"
+ "14/08/1999\n"
+ "15/08/1999\n"
+ "16/08/1999\n"
+ "17/08/1999\n"
+ "18/08/1999\n"
+ "19/08/1999\n"
+ "20/08/1999\n"
+ "21/08/1999\n"
+ "22/08/1999\n"
+ "23/08/1999\n"
+ "24/08/1999\n"
+ "25/08/1999\n"
+ "26/08/1999\n"
+ "27/08/1999\n"
+ "28/08/1999\n"
+ "29/08/1999\n"
+ "30/08/1999\n"
+ "31/08/1999\n"
+ "01/09/1999\n"
+ "02/09/1999\n"
+ "03/09/1999\n"
+ "04/09/1999\n"
+ "05/09/1999\n"
+ "06/09/1999\n"
+ "07/09/1999\n"
+ "08/09/1999\n"
+ "09/09/1999\n"
+ "10/09/1999\n"
+ "11/09/1999\n"
+ "12/09/1999\n"
+ "13/09/1999\n"
+ "14/09/1999\n"
+ "15/09/1999\n"
+ "16/09/1999\n"
+ "17/09/1999\n"
+ "18/09/1999\n"
+ "19/09/1999\n"
+ "20/09/1999\n"
+ "21/09/1999\n"
+ "22/09/1999\n"
+ "23/09/1999\n"
+ "24/09/1999\n"
+ "25/09/1999\n"
+ "26/09/1999\n"
+ "27/09/1999\n"
+ "28/09/1999\n"
+ "29/09/1999\n"
+ "30/09/1999\n"
+ "01/10/1999\n"
+ "02/10/1999\n"
+ "03/10/1999\n"
+ "04/10/1999\n"
+ "05/10/1999\n"
+ "06/10/1999\n"
+ "07/10/1999\n"
+ "08/10/1999\n"
+ "09/10/1999\n"
+ "10/10/1999\n"
+ "11/10/1999\n"
+ "12/10/1999\n"
+ "13/10/1999\n"
+ "14/10/1999\n"
+ "15/10/1999\n"
+ "16/10/1999\n"
+ "17/10/1999\n"
+ "18/10/1999\n"
+ "19/10/1999\n"
+ "20/10/1999\n"
+ "21/10/1999\n"
+ "22/10/1999\n"
+ "23/10/1999\n"
+ "24/10/1999\n"
+ "25/10/1999\n"
+ "26/10/1999\n"
+ "27/10/1999\n"
+ "28/10/1999\n"
+ "29/10/1999\n"
+ "30/10/1999\n"
+ "31/10/1999\n"
+ "01/11/1999\n"
+ "02/11/1999\n"
+ "03/11/1999\n"
+ "04/11/1999\n"
+ "05/11/1999\n"
+ "06/11/1999\n"
+ "07/11/1999\n"
+ "08/11/1999\n"
+ "09/11/1999\n"
+ "10/11/1999\n"
+ "11/11/1999\n"
+ "12/11/1999\n"
+ "13/11/1999\n"
+ "14/11/1999\n"
+ "15/11/1999\n"
+ "16/11/1999\n"
+ "17/11/1999\n"
+ "18/11/1999\n"
+ "19/11/1999\n"
+ "20/11/1999\n"
+ "21/11/1999\n"
+ "22/11/1999\n"
+ "23/11/1999\n"
+ "24/11/1999\n"
+ "25/11/1999\n"
+ "26/11/1999\n"
+ "27/11/1999\n"
+ "28/11/1999\n"
+ "29/11/1999\n"
+ "30/11/1999\n"
+ "01/12/1999\n"
+ "02/12/1999\n"
+ "03/12/1999\n"
+ "04/12/1999\n"
+ "05/12/1999\n"
+ "06/12/1999\n"
+ "07/12/1999\n"
+ "08/12/1999\n"
+ "09/12/1999\n"
+ "10/12/1999\n"
+ "11/12/1999\n"
+ "12/12/1999\n"
+ "13/12/1999\n"
+ "14/12/1999\n"
+ "15/12/1999\n"
+ "16/12/1999\n"
+ "17/12/1999\n"
+ "18/12/1999\n"
+ "19/12/1999\n"
+ "20/12/1999\n"
+ "21/12/1999\n"
+ "22/12/1999\n"
+ "23/12/1999\n"
+ "24/12/1999\n"
+ "25/12/1999\n"
+ "26/12/1999\n"
+ "27/12/1999\n"
+ "28/12/1999\n"
+ "29/12/1999\n"
+ "30/12/1999\n"
+ "31/12/1999\n"
+ "01/01/2000\n"
+ "02/01/2000\n"
+ "03/01/2000\n"
+ "04/01/2000\n"
+ "05/01/2000\n"
+ "06/01/2000\n"
+ "07/01/2000\n"
+ "08/01/2000\n"
+ "09/01/2000\n"
+ "10/01/2000\n"
+ "11/01/2000\n"
+ "12/01/2000\n"
+ "13/01/2000\n"
+ "14/01/2000\n"
+ "15/01/2000\n"
+ "16/01/2000\n"
+ "17/01/2000\n"
+ "18/01/2000\n"
+ "19/01/2000\n"
+ "20/01/2000\n"
+ "21/01/2000\n"
+ "22/01/2000\n"
+ "23/01/2000\n"
+ "24/01/2000\n"
+ "25/01/2000\n"
+ "26/01/2000\n"
+ "27/01/2000\n"
+ "28/01/2000\n"
+ "29/01/2000\n"
+ "30/01/2000\n"
+ "31/01/2000\n"
+ "01/02/2000\n"
+ "02/02/2000\n"
+ "03/02/2000\n"
+ "04/02/2000\n"
+ "05/02/2000\n"
+ "06/02/2000\n"
+ "07/02/2000\n"
+ "08/02/2000\n"
+ "09/02/2000\n"
+ "10/02/2000\n"
+ "11/02/2000\n"
+ "12/02/2000\n"
+ "13/02/2000\n"
+ "14/02/2000\n"
+ "15/02/2000\n"
+ "16/02/2000\n"
+ "17/02/2000\n"
+ "18/02/2000\n"
+ "19/02/2000\n"
+ "20/02/2000\n"
+ "21/02/2000\n"
+ "22/02/2000\n"
+ "23/02/2000\n"
+ "24/02/2000\n"
+ "25/02/2000\n"
+ "26/02/2000\n"
+ "27/02/2000\n"
+ "28/02/2000\n"
+ "29/02/2000\n"
+ "01/03/2000\n"
+ "02/03/2000\n"
+ "03/03/2000\n"
+ "04/03/2000\n"
+ "05/03/2000\n"
+ "06/03/2000\n"
+ "07/03/2000\n"
+ "08/03/2000\n"
+ "09/03/2000\n"
+ "10/03/2000\n"
+ "11/03/2000\n"
+ "12/03/2000\n"
+ "13/03/2000\n"
+ "14/03/2000\n"
+ "15/03/2000\n"
+ "16/03/2000\n"
+ "17/03/2000\n"
+ "18/03/2000\n"
+ "19/03/2000\n"
+ "20/03/2000\n"
+ "21/03/2000\n"
+ "22/03/2000\n"
+ "23/03/2000\n"
+ "24/03/2000\n"
+ "25/03/2000\n"
+ "26/03/2000\n"
+ "27/03/2000\n"
+ "28/03/2000\n"
+ "29/03/2000\n"
+ "30/03/2000\n"
+ "31/03/2000\n"
+ "01/04/2000\n"
+ "02/04/2000\n"
+ "03/04/2000\n"
+ "04/04/2000\n"
+ "05/04/2000\n"
+ "06/04/2000\n"
+ "07/04/2000\n"
+ "08/04/2000\n"
+ "09/04/2000\n"
+ "10/04/2000\n"
+ "11/04/2000\n"
+ "12/04/2000\n"
+ "13/04/2000\n"
+ "14/04/2000\n"
+ "15/04/2000\n"
+ "16/04/2000\n"
+ "17/04/2000\n"
+ "18/04/2000\n"
+ "19/04/2000\n"
+ "20/04/2000\n"
+ "21/04/2000\n"
+ "22/04/2000\n"
+ "23/04/2000\n"
+ "24/04/2000\n"
+ "25/04/2000\n"
+ "26/04/2000\n"
+ "27/04/2000\n"
+ "28/04/2000\n"
+ "29/04/2000\n"
+ "30/04/2000\n"
+ "01/05/2000\n"
+ "02/05/2000\n"
+ "03/05/2000\n"
+ "04/05/2000\n"
+ "05/05/2000\n"
+ "06/05/2000\n"
+ "07/05/2000\n"
+ "08/05/2000\n"
+ "09/05/2000\n"
+ "10/05/2000\n"
+ "11/05/2000\n"
+ "12/05/2000\n"
+ "13/05/2000\n"
+ "14/05/2000\n"
+ "15/05/2000\n"
+ "16/05/2000\n"
+ "17/05/2000\n"
+ "18/05/2000\n"
+ "19/05/2000\n"
+ "20/05/2000\n"
+ "21/05/2000\n"
+ "22/05/2000\n"
+ "23/05/2000\n"
+ "24/05/2000\n"
+ "25/05/2000\n"
+ "26/05/2000\n"
+ "27/05/2000\n"
+ "28/05/2000\n"
+ "29/05/2000\n"
+ "30/05/2000\n"
+ "31/05/2000\n"
+ "01/06/2000\n"
+ "02/06/2000\n"
+ "03/06/2000\n"
+ "04/06/2000\n"
+ "05/06/2000\n"
+ "06/06/2000\n"
+ "07/06/2000\n"
+ "08/06/2000\n"
+ "09/06/2000\n"
+ "10/06/2000\n"
+ "11/06/2000\n"
+ "12/06/2000\n"
+ "13/06/2000\n"
+ "14/06/2000\n"
+ "15/06/2000\n"
+ "16/06/2000\n"
+ "17/06/2000\n"
+ "18/06/2000\n"
+ "19/06/2000\n"
+ "20/06/2000\n"
+ "21/06/2000\n"
+ "22/06/2000\n"
+ "23/06/2000\n"
+ "24/06/2000\n"
+ "25/06/2000\n"
+ "26/06/2000\n"
+ "27/06/2000\n"
+ "28/06/2000\n"
+ "29/06/2000\n"
+ "30/06/2000\n"
+ "01/07/2000\n"
+ "02/07/2000\n"
+ "03/07/2000\n"
+ "04/07/2000\n"
+ "05/07/2000\n"
+ "06/07/2000\n"
+ "07/07/2000\n"
+ "08/07/2000\n"
+ "09/07/2000\n"
+ "10/07/2000\n"
+ "11/07/2000\n"
+ "12/07/2000\n"
+ "13/07/2000\n"
+ "14/07/2000\n"
+ "15/07/2000\n"
+ "16/07/2000\n"
+ "17/07/2000\n"
+ "18/07/2000\n"
+ "19/07/2000\n"
+ "20/07/2000\n"
+ "21/07/2000\n"
+ "22/07/2000\n"
+ "23/07/2000\n"
+ "24/07/2000\n"
+ "25/07/2000\n"
+ "26/07/2000\n"
+ "27/07/2000\n"
+ "28/07/2000\n"
+ "29/07/2000\n"
+ "30/07/2000\n"
+ "31/07/2000\n"
+ "01/08/2000\n"
+ "02/08/2000\n"
+ "03/08/2000\n"
+ "04/08/2000\n"
+ "05/08/2000\n"
+ "06/08/2000\n"
+ "07/08/2000\n"
+ "08/08/2000\n"
+ "09/08/2000\n"
+ "10/08/2000\n"
+ "11/08/2000\n"
+ "12/08/2000\n"
+ "13/08/2000\n"
+ "14/08/2000\n"
+ "15/08/2000\n"
+ "16/08/2000\n"
+ "17/08/2000\n"
+ "18/08/2000\n"
+ "19/08/2000\n"
+ "20/08/2000\n"
+ "21/08/2000\n"
+ "22/08/2000\n"
+ "23/08/2000\n"
+ "24/08/2000\n"
+ "25/08/2000\n"
+ "26/08/2000\n"
+ "27/08/2000\n"
+ "28/08/2000\n"
+ "29/08/2000\n"
+ "30/08/2000\n"
+ "31/08/2000\n"
+ "01/09/2000\n"
+ "02/09/2000\n"
+ "03/09/2000\n"
+ "04/09/2000\n"
+ "05/09/2000\n"
+ "06/09/2000\n"
+ "07/09/2000\n"
+ "08/09/2000\n"
+ "09/09/2000\n"
+ "10/09/2000\n"
+ "11/09/2000\n"
+ "12/09/2000\n"
+ "13/09/2000\n"
+ "14/09/2000\n"
+ "15/09/2000\n"
+ "16/09/2000\n"
+ "17/09/2000\n"
+ "18/09/2000\n"
+ "19/09/2000\n"
+ "20/09/2000\n"
+ "21/09/2000\n"
+ "22/09/2000\n"
+ "23/09/2000\n"
+ "24/09/2000\n"
+ "25/09/2000\n"
+ "26/09/2000\n"
+ "27/09/2000\n"
+ "28/09/2000\n"
+ "29/09/2000\n"
+ "30/09/2000\n"
+ "01/10/2000\n"
+ "02/10/2000\n"
+ "03/10/2000\n"
+ "04/10/2000\n"
+ "05/10/2000\n"
+ "06/10/2000\n"
+ "07/10/2000\n"
+ "08/10/2000\n"
+ "09/10/2000\n"
+ "10/10/2000\n"
+ "11/10/2000\n"
+ "12/10/2000\n"
+ "13/10/2000\n"
+ "14/10/2000\n"
+ "15/10/2000\n"
+ "16/10/2000\n"
+ "17/10/2000\n"
+ "18/10/2000\n"
+ "19/10/2000\n"
+ "20/10/2000\n"
+ "21/10/2000\n"
+ "22/10/2000\n"
+ "23/10/2000\n"
+ "24/10/2000\n"
+ "25/10/2000\n"
+ "26/10/2000\n"
+ "27/10/2000\n"
+ "28/10/2000\n"
+ "29/10/2000\n"
+ "30/10/2000\n"
+ "31/10/2000\n"
+ "01/11/2000\n"
+ "02/11/2000\n"
+ "03/11/2000\n"
+ "04/11/2000\n"
+ "05/11/2000\n"
+ "06/11/2000\n"
+ "07/11/2000\n"
+ "08/11/2000\n"
+ "09/11/2000\n"
+ "10/11/2000\n"
+ "11/11/2000\n"
+ "12/11/2000\n"
+ "13/11/2000\n"
+ "14/11/2000\n"
+ "15/11/2000\n"
+ "16/11/2000\n"
+ "17/11/2000\n"
+ "18/11/2000\n"
+ "19/11/2000\n"
+ "20/11/2000\n"
+ "21/11/2000\n"
+ "22/11/2000\n"
+ "23/11/2000\n"
+ "24/11/2000\n"
+ "25/11/2000\n"
+ "26/11/2000\n"
+ "27/11/2000\n"
+ "28/11/2000\n"
+ "29/11/2000\n"
+ "30/11/2000\n"
+ "01/12/2000\n"
+ "02/12/2000\n"
+ "03/12/2000\n"
+ "04/12/2000\n"
+ "05/12/2000\n"
+ "06/12/2000\n"
+ "07/12/2000\n"
+ "08/12/2000\n"
+ "09/12/2000\n"
+ "10/12/2000\n"
+ "11/12/2000\n"
+ "12/12/2000\n"
+ "13/12/2000\n"
+ "14/12/2000\n"
+ "15/12/2000\n"
+ "16/12/2000\n"
+ "17/12/2000\n"
+ "18/12/2000\n"
+ "19/12/2000\n"
+ "20/12/2000\n"
+ "21/12/2000\n"
+ "22/12/2000\n"
+ "23/12/2000\n"
+ "24/12/2000\n"
+ "25/12/2000\n"
+ "26/12/2000\n"
+ "27/12/2000\n"
+ "28/12/2000\n"
+ "29/12/2000\n"
+ "30/12/2000\n"
+ "31/12/2000\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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