package edu.fudan.nlp.cn.ner;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Address {
ArrayList<Pattern> patterns;
public Address(){
patterns= new ArrayList<Pattern>();
patterns.add(Pattern.compile("地址:\\s*(.{2,6}市?.{2,6}路.{2,6}号.{2,6}号楼.{2,6}室)"));
patterns.add(Pattern.compile("地址:\\s*(.{2,6}路.{2,6}号.+号楼.+室)"));
patterns.add(Pattern.compile("地址:\\s*(.{2,6}路.{2,6}号)"));
patterns.add(Pattern.compile("地址:\\s*(.{2,6}市.{2,6}区.{2,6}路.{2,6}号)\\s+"));
}
public List<String> tag(String str){
Iterator<Pattern> it = patterns.iterator();
List<String> list = new ArrayList<String>();
while(it.hasNext()){
Pattern p = it.next();
Matcher m = p.matcher(str);
if(m.find()) {//匹配
int idx = patterns.indexOf(p);
for(int i=1;i<=m.groupCount();i++){
list.add(m.group(i));
}
}
}
return list;
}
public static void main(String[] args) throws Exception {
String ss = "地址:上海市杨浦区邯郸路220号 \n地址:上海莱希信息科技有限公司(以下简称“上海莱希”)在上海成立,注册地为国家863...联系人:张先生地址:上海张江高科技园区毕升路299号11号楼402室 电话:33932148 ...";
Address ad = new Address();
System.out.println(ad.tag(ss));
}
}