// Uncolored, plain source file:  tst.java
//    tst.java by Steven R. Brandt
//    <p>
//    An example file explaining how to use
//    com.stevesoft.pat, com.stevesoft.pat.wrap,
//    and com.stevesoft.pat.apps
//    <p>
//    This software comes without express or implied warranty.
//    No claim is made about the suitability of this software for
//    any purpose and neither I nor SteveSoft shall be liable for
//    damages suffered by the user of this software.
import com.stevesoft.pat.*;

/* tst.java by Steven R. Brandt

   This software comes without express or implied warranty.
   No claim is made about the suitability of this software for
   any purpose and neither I nor SteveSoft shall be liable for
   damages suffered by the user of this software.
   */

public class tst {
        public static void main(String[] unused) {

                // Some crazy patterns...
                Regex r = null;

                r = new Regex("([a-d]).*?\\1");
                r.search("foo d foo c foo b foo d foo d foo");
                doOutput(r);

                r = new Regex("[\\dX]+");
                r.search("match here => 9353X35");
                doOutput(r);

                r = new Regex("foo(?=(bar))");
                r.search("not foo but foobar only!");
                doOutput(r);

                r = new Regex("\\bfoo\\b");
                r.search("not foobar, nor barfoo, but foo and foo alone!");
                doOutput(r);
        }

        public static void doOutput(RegRes r) {
                System.out.println("before match => "+r.left());
                System.out.println("match => "+r.stringMatched());
                System.out.println("after match => "+r.right());
                for(int i=1;i<=r.numSubs();i++)
                        System.out.println(" ["+i+"] = "+r.stringMatched(i));
                System.out.println("");
        }
}
/* The output:

before match => foo 
match => d foo c foo b foo d
after match =>  foo d foo
 [1] = d

before match => match here => 
match => 9353X35
after match => 

before match => not foo but 
match => foo
after match => bar only!
 [1] = bar

before match => not foobar, nor barfoo, but 
match => foo
after match =>  and foo alone!
*/