/*
 * @(#)TestRegexMatch.java
 *
 * Summary: Test Matching with a Regex.
 *
 * Copyright: (c) 2009-2010 Roedy Green, Canadian Mind Products, http://mindprod.com
 *
 * Licence: This software may be copied and used freely for any purpose but military.
 *          http://mindprod.com/contact/nonmil.html
 *
 * Requires: JDK 1.6+
 *
 * Created with: IntelliJ IDEA IDE.
 *
 * Version History:
 *  1.1 2008-01-29
 */
package com.mindprod.example;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Test Matching with a Regex.
 * <p/>
 * Use a regex to check that an entire string precisesly matches a regex pattern,
 * with no characters left over in the pattern or the String.
 *
 * @author Roedy Green, Canadian Mind Products
 * @version 1.1 2008-01-29
 * @since 2009
 */
public class TestRegexMatch
    {
    // ------------------------------ CONSTANTS ------------------------------

    private static final Pattern pattern = Pattern.compile( "\\<td>([^\\<>]++)\\</td>" );

    // --------------------------- main() method ---------------------------

    /**
     * test harness
     *
     * @param args not used
     */
    public static void main( String[] args )
        {
        // Test if entire string is a perfect match for the Pattern
        // will print:
        // 0 : <td>orca</td>
        // 1 : orca

        final String lookIn = "<td>orca</td>";

        final Matcher m = pattern.matcher( lookIn );
        if ( m.matches() )
            {
            final int gc = m.groupCount();
            // group 0 is the whole pattern matched,
            // loops runs from from 0 to gc, not 0 to gc-1 as is traditional.
            for ( int i = 0; i <= gc; i++ )
                {
                System.out.println( i + " : " + m.group( i ) );
                }
            }
        }
    }