home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / misc / Regexp.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.3 KB  |  111 lines

  1. package sun.misc;
  2.  
  3. public class Regexp {
  4.    public boolean ignoreCase;
  5.    public String exp;
  6.    public String prefix;
  7.    public String suffix;
  8.    public boolean exact;
  9.    public int prefixLen;
  10.    public int suffixLen;
  11.    public int totalLen;
  12.    public String[] mids;
  13.  
  14.    public Regexp(String var1) {
  15.       this.exp = var1;
  16.       int var2 = var1.indexOf(42);
  17.       int var3 = var1.lastIndexOf(42);
  18.       if (var2 < 0) {
  19.          this.totalLen = var1.length();
  20.          this.exact = true;
  21.       } else {
  22.          this.prefixLen = var2;
  23.          if (var2 == 0) {
  24.             this.prefix = null;
  25.          } else {
  26.             this.prefix = var1.substring(0, var2);
  27.          }
  28.  
  29.          this.suffixLen = var1.length() - var3 - 1;
  30.          if (this.suffixLen == 0) {
  31.             this.suffix = null;
  32.          } else {
  33.             this.suffix = var1.substring(var3 + 1);
  34.          }
  35.  
  36.          int var4 = 0;
  37.  
  38.          for(int var5 = var2; var5 < var3 && var5 >= 0; var5 = var1.indexOf(42, var5 + 1)) {
  39.             ++var4;
  40.          }
  41.  
  42.          this.totalLen = this.prefixLen + this.suffixLen;
  43.          if (var4 > 0) {
  44.             this.mids = new String[var4];
  45.             int var8 = var2;
  46.  
  47.             for(int var6 = 0; var6 < var4; ++var6) {
  48.                ++var8;
  49.                int var7 = var1.indexOf(42, var8);
  50.                if (var8 < var7) {
  51.                   this.mids[var6] = var1.substring(var8, var7);
  52.                   this.totalLen += this.mids[var6].length();
  53.                }
  54.  
  55.                var8 = var7;
  56.             }
  57.          }
  58.  
  59.       }
  60.    }
  61.  
  62.    final boolean matches(String var1) {
  63.       return this.matches(var1, 0, var1.length());
  64.    }
  65.  
  66.    boolean matches(String var1, int var2, int var3) {
  67.       if (this.exact) {
  68.          return var3 == this.totalLen && this.exp.regionMatches(this.ignoreCase, 0, var1, var2, var3);
  69.       } else if (var3 < this.totalLen) {
  70.          return false;
  71.       } else if ((this.prefixLen <= 0 || this.prefix.regionMatches(this.ignoreCase, 0, var1, var2, this.prefixLen)) && (this.suffixLen <= 0 || this.suffix.regionMatches(this.ignoreCase, 0, var1, var2 + var3 - this.suffixLen, this.suffixLen))) {
  72.          if (this.mids == null) {
  73.             return true;
  74.          } else {
  75.             int var4 = this.mids.length;
  76.             int var5 = var2 + this.prefixLen;
  77.             int var6 = var2 + var3 - this.suffixLen;
  78.  
  79.             for(int var7 = 0; var7 < var4; ++var7) {
  80.                String var8 = this.mids[var7];
  81.  
  82.                int var9;
  83.                for(var9 = var8.length(); var5 + var9 <= var6 && !var8.regionMatches(this.ignoreCase, 0, var1, var5, var9); ++var5) {
  84.                }
  85.  
  86.                if (var5 + var9 > var6) {
  87.                   return false;
  88.                }
  89.  
  90.                var5 += var9;
  91.             }
  92.  
  93.             return true;
  94.          }
  95.       } else {
  96.          return false;
  97.       }
  98.    }
  99.  
  100.    public static void main(String[] var0) {
  101.       Regexp var1 = new Regexp(var0[0]);
  102.       System.out.print("re=" + var1 + "\n");
  103.       var1.ignoreCase = true;
  104.  
  105.       for(int var2 = 1; var2 < var0.length; ++var2) {
  106.          System.out.print("<" + var0[var2] + "> " + var1.matches(var0[var2]) + "\n");
  107.       }
  108.  
  109.    }
  110. }
  111.