java中正则表达式怎么匹配换行后的字符串

时间:2021-08-21 00:06:16
我的代码是这样写的
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的内容为
java中正则表达式怎么匹配换行后的字符串
我是想将<div class="endtext">之后的都匹配出来,但是运行的结果是
<div class="endtext">XXXXXXXXXXX<br />
求大神帮忙!!!!!!!!

3 个解决方案

#1


将(.*)换成([\\s\\S]*)运行的结果也是一样的

#2


我是想将<div class="endtext">之后的都匹配出来,但是运行的结果是
<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 />

这个结果有什么问题么?你是读一行匹配一行的,又不是全部读进来后再匹配的。

#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>