此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【RunUpwind】截止到2008-07-02 15:14:01的历史汇总数据(不包括此帖):
发帖的总数量:25 发帖的总分数:1210
结贴的总数量:25 结贴的总分数:1210
无满意结贴数:3 无满意结贴分:100
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:12.00 % 无满意结分率:8.26 %
敬礼!
楼主【RunUpwind】截止到2008-07-02 15:14:01的历史汇总数据(不包括此帖):
发帖的总数量:25 发帖的总分数:1210
结贴的总数量:25 结贴的总分数:1210
无满意结贴数:3 无满意结贴分:100
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:12.00 % 无满意结分率:8.26 %
敬礼!
String regEx="(<abc>)";
String str="<abc>dddabc</abc>abcf<abc>dslka</abc>";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
if(m.find()){
for(int i=0;i<=m.groupCount();i++){
System.out.println(m.group(i));
}
}
String regEx="(<abc>[\\w\\s]*</abc>)";
String str=" <abc>dddabc </abc>abcf <abc>dslka </abc>";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
}
这个满足你的输出结果,不过跟你的代码不一样。但愿对你有用!
public static void main(String[] args) {
String regEx="(<abc>[\\w\\s]*</abc>).*(<abc>[\\w\\s]*</abc>)";
String str=" <abc> ddd abc </abc> a cf <abc>dsl ka </abc>";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
if(m.find()){
for(int i=1;i <=m.groupCount();i++){
System.out.println(m.group(i));
}
}
}估计你想要这个!
String regEx="(<abc>[\\w\\s]*</abc>).*(<abc>[\\w\\s]*</abc>)";
String str=" <abc> ddd abc </abc> a cf <abc>dsl ka </abc>";
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
if(m.find()){
for(int i=1;i <=m.groupCount();i++){
System.out.println(m.group(i));
}
}
}
估计你想要这个!
1. <abc>...</abc>之间可能有任意字符,但绝不会有</abc>
2. <abc>...</abc>可能有多个(不止两个)我之前按照"<abc>...</abc>之间可能有任意字符,但绝不会有</abc>"的思路,
找到了这个贴子:
http://hi.baidu.com/uniquejava/blog/item/b5c702ce0667753bb600c880.html
http://www.cjsdn.net/post/view?bid=1&id=190134&tpg=1&ppg=1&sty=1#190735
但是没写出来.
import java.util.regex.Pattern;public class Test3 {
public static void main(String[] args) {
String str = "<abc>dddabc</abc>abcf<abc>dslka<aa>asdasdf</abc>";
String regex = "<abc>(.*?)</abc>";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
}
}
import java.util.regex.Pattern;public class Test3 {
public static void main(String[] args) {
String str = "<abc>dddabc</abc>abcf<abc>dslka<aa>\nasdasdf</abc>";
String regex = "<abc>(.*?)</abc>";
Pattern p = Pattern.compile(regex, Pattern.DOTALL);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println("FIND: " + m.group(1));
}
}
}这样可以输出<abc></abc>之间的任意字符(包括换行符什么的),如果连<abc></abc>都要的话,
只要把 m.group(1) 改成 m.group() 就行了。
太好了,就是我想要的效果,能稍作解释吗?
"<abc>(.*?)</abc>"
Pattern.DOTALL
表达式:a.*?b 将匹配 a====bPattern.DOTALL 是一个匹配标志,没有这个标志时 . 匹配不包括行结束符的所有字符,也就是说
. 是不能匹配换行、换页等等这类行结束符的,加上 Pattern.DOTALL 的话就能进行匹配了,
DOTALL 嘛,DOT 表示所有的,呵呵 :)