现在我想完成这样一个功能,把一个文本文件里面的数据导入数据库。文本文件的文件内容大致如下:
......
王老五、李小二:《文章名》 XXXX年第X期第X页
陈小二、张三:《文章名》 XXXX年第X期第X页
......直接用String类的一些函数拆倒是可以,但我希望灵活些,在导入数据之前用一个类似正则表达式的式子来进行拆分(考虑到以后可能还有其他不同格式的类似需求),如何实现之?先谢谢大家!
......
王老五、李小二:《文章名》 XXXX年第X期第X页
陈小二、张三:《文章名》 XXXX年第X期第X页
......直接用String类的一些函数拆倒是可以,但我希望灵活些,在导入数据之前用一个类似正则表达式的式子来进行拆分(考虑到以后可能还有其他不同格式的类似需求),如何实现之?先谢谢大家!
我是这么想的,就是希望像:
......
王老五、李小二:《文章名》 XXXX年第X期第X页
陈小二、张三:《文章名》 XXXX年第X期第X页
......的文件如果换成:
......
XXXX年第X期第X页 王老五、李小二:《文章名》
XXXX年第X期第X页 陈小二、张三:《文章名》
......通过修改一个正则表达式就可以拆分。
如果是的话,是这样的: 每条信息包含 作者名、文章名以及文章发表时间信息。条与条信息之间由换行分割。谢谢关注!
<作者名><、作者名>?<:><文章名><" "><时间>
可以把你匹配的东西转成一个string[][]出来。第一维代表总共有多少行,第二维代表数据库中的每一列~
String pat = "\\b(.+?):";
List p = Test.getSentence(pat, content, 1);
System.out.print(p);
pat = "《(.+?)》";
p = Test.getSentence(pat, content, 1);
System.out.print(p);
pat = "\\s(.+?)\n";
p = Test.getSentence(pat, content, 1);
System.out.print(p); }
public static List getSentence(String pat,String content,int count) {
String str = "";
List p = new ArrayList();
Pattern pattern=Pattern.compile(pat);
Matcher matcher=pattern.matcher(content);
while(matcher.find()){
//allm = matcher.groupCount();
str = matcher.group(count);
if(!p.contains(str)){
p.add(str);
}
}
return p;
}