public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("F:/1笔记/33.txt");
BufferedReader br=new BufferedReader(fr);
String line=null;
String regex="(?m)(<div class=\"endtext\">)(.*)";
Pattern p=Pattern.compile(regex,Pattern.MULTILINE);
while((line=br.readLine())!=null){
Matcher m=p.matcher(line);
while(m.find()){
String s=m.group();
System.out.println(s);
}
}
}
}
33.txt的内容为
我是想将<div class="endtext">之后的都匹配出来,但是运行的结果是
<div class="endtext">XXXXXXXXXXX<br />
求大神帮忙!!!!!!!!
3 个解决方案
#1
将(.*)换成([\\s\\S]*)运行的结果也是一样的
#2
我是想将<div class="endtext">之后的都匹配出来,但是运行的结果是
<div class="endtext">XXXXXXXXXXX<br />
这个结果有什么问题么?你是读一行匹配一行的,又不是全部读进来后再匹配的。
<div class="endtext">XXXXXXXXXXX<br />
这个结果有什么问题么?你是读一行匹配一行的,又不是全部读进来后再匹配的。
#3
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
// 多行字符串
String text = "Begin <div class=\"endtext\">First...\n\nSecond... \n\nThird</div> What <div>Foo</div>";
Pattern pattern = Pattern.compile("<div class=\"endtext\">[\\s\\S]*?</div>");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出
<div class="endtext">First...
Second...
Third</div>
#1
将(.*)换成([\\s\\S]*)运行的结果也是一样的
#2
我是想将<div class="endtext">之后的都匹配出来,但是运行的结果是
<div class="endtext">XXXXXXXXXXX<br />
这个结果有什么问题么?你是读一行匹配一行的,又不是全部读进来后再匹配的。
<div class="endtext">XXXXXXXXXXX<br />
这个结果有什么问题么?你是读一行匹配一行的,又不是全部读进来后再匹配的。
#3
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
// 多行字符串
String text = "Begin <div class=\"endtext\">First...\n\nSecond... \n\nThird</div> What <div>Foo</div>";
Pattern pattern = Pattern.compile("<div class=\"endtext\">[\\s\\S]*?</div>");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出
<div class="endtext">First...
Second...
Third</div>