辅导:正则表达式数据抽取regularexpressionadvanceuse
来源:优易学  2011-12-10 10:55:30   【优易学:中国教育考试门户网】   资料下载   IT书店

  以下是程序的输出:
  Aim String:buffer size1=0x1234 buffer size2=1024 buffer size3=9999
  [src pattern]:buffer size1=VAR{HEX_NUM=>N1} buffer size2=VAR{STRING=>N2} buffer size3=VAR{DEC_NUM=>N3}
  [dst pattern]:buffer size1=(0x\d{1,}) buffer size2=(.*?) buffer size3=(\d{1,})
  [var List]
  N1 0x1234
  N2 1024
  N3 9999
  本意是分析Aim String,获取size1 size2 size3的数据,并且与3个变量N1 N2 N3关联。
  为此定义了一个串在 src pattern中, 青年人网提示首先分析src pattern并得到目标的正则表达式
  然后匹配数据,在匹配的过程中将数据与关键字关联。
  程序代码如下:
  class UserStringPattern
  import java.util.ArrayList;
  import java.util.List;
  import java.util.regex.Pattern;
  public class UserStringPattern {
  public StringBuffer userPattern;
  public StringBuffer destPattern;
  public Pattern pattern;
  public List<VarValue> varList;
  public UserStringPattern(StringBuffer userPattern) {
  super();
  this.userPattern = userPattern;
  this.destPattern = new StringBuffer(userPattern);
  varList = new ArrayList();
  }
  @Override
  public String toString() {
  StringBuffer sb = new StringBuffer();
  sb.append("[src pattern]:" + userPattern);
  sb.append("\n");
  sb.append("[dst pattern]:" + destPattern);
  sb.append("\n");
  sb.append("[var List]\n");
  for (int i = 0; i < varList.size(); i++) {
  sb.append("\t" + varList.get(i).toString());
  sb.append("\n");
  }
  return sb.toString();
  }
  public String getValueByName(String name) {
  for (int i = 0; i < varList.size(); i++) {
  VarValue varValue = varList.get(i);
  if (varValue.varName.equals(name)) {
  return varValue.value;
  }
  }
  return "";
  }
  }
  class RegExpUtil
  package com.flylb.util;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  import java.util.regex.PatternSyntaxException;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  class VarValue {
  public String varName;
  public String value;
  public VarValue(String varName, String value) {
  super();
  this.varName = varName;
  this.value = value;
  }
  @Override
  public String toString() {
  return varName + "\t" + value;
  }
  }
  @SuppressWarnings("unchecked")
  public class RegExpUtil {
  private static Log log = LogFactory.getLog(RegExpUtil.class);
  private static Map<String, String> regExpMap = new HashMap();
  static {
  regExpMap.put("DEC_NUM", "(\\d{1,})");
  regExpMap.put("HEX_NUM", "(0x\\d{1,})");
  regExpMap.put("STRING", "(.*?)");
  }

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训