1、字符串 类似于: 日期<font color="red">:</font><a name="B03_公告发布日期">2008年6月22日</a></span>
求获得“2008年6月22日”的正则表达式(要分析的字符串以"日期"开头,接着跟的非<>代码是一个:号,然后下一个非<>代码就是要获取的内容)2、字符串 类似于: 2008年12月01日,2008Y12M01D
求获得像“年月日”或"YMD"等日期中间的叁个字符(要分析的字符串还可能是08Y6M01D或08年12月1日等)
求获得“2008年6月22日”的正则表达式(要分析的字符串以"日期"开头,接着跟的非<>代码是一个:号,然后下一个非<>代码就是要获取的内容)2、字符串 类似于: 2008年12月01日,2008Y12M01D
求获得像“年月日”或"YMD"等日期中间的叁个字符(要分析的字符串还可能是08Y6M01D或08年12月1日等)
楼主【hzpike】截止到2008-06-23 11:42:36的历史汇总数据(不包括此帖):
发帖数:27 发帖分:950
结贴数:23 结贴分:750
未结数:4 未结分:200
结贴率:85.19 % 结分率:78.95 %
楼主加油
你先看下这个,我这边看能不能帮你解决,
public static void do6(){
String str="日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span> ";
Pattern pattern = Pattern.compile("日期 <[^>]+>: </font> <a name=[^>]+>([^<]+)</a> </span>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()){
System.out.println(m.group(1).trim());
}
}
public static void do7(){
String str="2008年12月01日,2008Y12M01D";
Pattern pattern = Pattern.compile("(((\\d+)[年|Y](\\d+)[月|MO](\\d+)[日|D]))",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()){
System.out.println(m.group(3)+"##"+m.group(4)+"##"+m.group(5));
System.out.println(m.group(1));
}
}
不过,您给的表达式还有些不符合我的要求。
1、日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span>
其中 <a name=\"B03_公告发布日期\">不一定有的,也许是其他代码,总之要取的数据在冒号后的第一个非 <>代码里。
字符串也许是:" 日期 : <font size=9>2008年6月22日 </font><BR> </span>"或日期<br> :<br> <a href='xxx'>2008年6月22日 </a><BR> </span>"等等2、年月日或YMD也是不一定的,也许是2008y12m01d等,总是是夹在日期数字中间的字母或汉字
1.
public static void do6(){
String str="日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span> ";
Pattern pattern = Pattern.compile("日期 <[^>]+>: </font>.*?<a [^>]+>([^<]+)</a>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()){
System.out.println(m.group(1).trim());
}
}2.
public static void do7(){
String str="2008年12月01日,2008Y12M01D";
Pattern pattern = Pattern.compile("((\\d+(.*?)\\d+(.*?)\\d+([^\\d]{1})))",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()){
System.out.println(m.group(3)+"##"+m.group(4)+"##"+m.group(5));
}
}
这个日期是出现在第二个非<>里啊,
1.<br> : <br> <a href='xxx'>2008年6月22日 </a>
2.<font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a>
3.日期 : <font size=9>2008年6月22日 </font> <BR> </span>
public static void do6(){
String str="日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span> 字符串也许是:\" 日期 : <font size=9>2008年6月22日 </font> <BR> </span>\"或日期 <br> : <br> <a href='xxx'>2008年6月22日 </a> <BR> </span>";
Pattern pattern = Pattern.compile(": (<[^>]+>)?.*?<[^>]+>([^<]+)<[^>]+>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()){
System.out.println(m.group(2).trim());
}
}