⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 likeopwrapper.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      LikeOpWrapper.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.util.lexical;import gnu.regexp.RE;import gnu.regexp.REException;import java.util.StringTokenizer;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.XmlBlasterException;import org.xmlBlaster.util.def.ErrorCode;/** * LikeOpWrapper * @author <a href="mailto:michele@laghi.eu">Michele Laghi</a> */public final class LikeOpWrapper {   private static final String ME = "LikeOpWrapper";   private String regexPattern;   private RE expression;   private Global global;   private static Logger log = Logger.getLogger(LikeOpWrapper.class.getName());   public LikeOpWrapper(Global global, String pattern) throws XmlBlasterException {      this(global, pattern, (char)0);   }   public LikeOpWrapper(Global global, String pattern, char escape) throws XmlBlasterException {      this(global, pattern, escape, true);   }/*   public LikeOpWrapper(Global global, String pattern, char escape, boolean doReducedSyntax)       throws XmlBlasterException {      this.global = global;            String tmp = pattern;      if (doReducedSyntax) {         tmp = replace(tmp, escape, "_", ".");         if (log.isLoggable(Level.FINE)) this.log.trace(ME, "constructor regexPattern (transitional)='" + tmp + "'");         tmp = replace(tmp, escape, "%", ".*");         if (log.isLoggable(Level.FINE)) this.log.trace(ME, "constructor regexPattern='" + this.regexPattern + "'");      }      try {         this.regexPattern = tmp;         this.expression = new RE(tmp);      }      catch (REException ex) {         if (log.isLoggable(Level.FINE)) this.log.trace(ME, "constructor " + Global.getStackTraceAsString());         throw new XmlBlasterException(this.global, ErrorCode.USER_ILLEGALARGUMENT, ME + " constructor: could not generate a Regex from the string '" + pattern + "' reason: " + ex.getMessage());      }   }*/   public LikeOpWrapper(Global global, String pattern, char escape, boolean doReducedSyntax)    throws XmlBlasterException {   this.global = global;      String tmp = pattern;   if (doReducedSyntax) {      StringBuffer buf = new StringBuffer();      boolean isEscape = false;      for (int i=0; i < pattern.length(); i++) {         char ch = pattern.charAt(i);         switch (ch) {            case '_' :               if (isEscape) buf.append(ch);               else buf.append('.');               isEscape = false;               break;            case '%' :                if (isEscape) buf.append(ch);               else buf.append('.').append('*');               isEscape = false;               break;            default:                if (ch == escape) isEscape = true;               else {                  isEscape = false;                  buf.append(ch);               }         }      }      tmp = buf.toString();      if (log.isLoggable(Level.FINE)) this.log.fine("constructor regexPattern='" + tmp + "'");   }   try {      this.regexPattern = tmp;      this.expression = new RE(tmp);   }   catch (REException ex) {      if (log.isLoggable(Level.FINE)) this.log.fine("constructor " + Global.getStackTraceAsString(ex));      throw new XmlBlasterException(this.global, ErrorCode.USER_ILLEGALARGUMENT, ME + " constructor: could not generate a Regex from the string '" + pattern + "' reason: " + ex.getMessage());   }}      public boolean match(String inputString) {      return this.expression.isMatch(inputString);   }      /**    *     * @param pattern The input String to modify (the initial pattern used)    * @param escape The character to use as the escape char. If 0 then it works as no escape was defined    * @param token the token to be replaced    * @param replacement the string to use to replace the given token.    * @return    */   public static String replace(String pattern, char escape, String token, String replacement) {      StringTokenizer tokenizer = new StringTokenizer(pattern, token);      StringBuffer buf = new StringBuffer();      while (tokenizer.hasMoreTokens()) {         String tmp = tokenizer.nextToken();         buf.append(tmp);         if (tokenizer.hasMoreTokens()) {            if (tmp.charAt(tmp.length()-1) == escape) {               buf.append(token);            }            else {               buf.append(replacement);            }         }      }      return buf.toString();   }      public static void main(String[] args) {      if (args.length != 2) {         System.err.println("usage: java org.xmlBlaster.util.lexical.LikeOpWrapper pattern inputString");         System.exit(-1);      }      try {         LikeOpWrapper wrapper = new LikeOpWrapper(new Global((String[])null), args[0], (char)0, false);         System.out.println("result: " + wrapper.match(args[1]));      }      catch (Exception ex) {         ex.printStackTrace();      }   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -