<question>
<url>http://zhidao.baidu.com/question/93954381.html</url>
<qtitle>羽毛球PVC塑胶地板能&&比赛吗?</qtitle>
<qcontent>使用羽毛球PVC塑胶地板能比赛吗? </qcontent>
<answernum>5</answernum>
<bestanswer>0</bestanswer>
<asker>健身健康生活</asker>
</question>
以上是我的xml文件,我在用正则进行匹配的时候。
写成这样可以匹配成功:Pattern myPattern=Pattern.compile("<url>(.*?)</url>");
但是写成这样:Pattern myPattern=Pattern.compile("<question>(.*?)</question>");就什么也匹配不上。
为什么呢?import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexXml {
 private static String myXml="";
 private static  String myXmlReader;
public static String getInfo(String tmpFile) throws IOException {
StringBuffer sbFile;
FileReader in = new FileReader(tmpFile);
char[] buffer = new char[4096];
int len;
sbFile = new StringBuffer();
while ((len = in.read(buffer)) != -1) {
String s = new String(buffer, 0, len);
sbFile.append(s);
}
return sbFile.toString();
} public static void main(String args[]){
 
 String filePath = "D:/AxiomDemo/xmlfile/00.xml";
 
    try {
myXmlReader=getInfo(filePath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   String myRegex="<url>(.*?)</url>";
   String myGroup="";
   Pattern myPattern=Pattern.compile(myRegex);
   Matcher myMatcher=myPattern.matcher(myXmlReader);
   while (myMatcher.find()){
   myGroup=myMatcher.group();
   System.out.println(myGroup);
   
   
   }
   
 
 }
}

解决方案 »

  1.   

    Pattern myPattern=Pattern.compile("(?s) <question>(.*?) </question>");
      

  2.   

    或者Pattern p = Pattern.compile("<question>(.*?) </question>", Pattern.DOTALL);
      

  3.   

    谢谢楼上两位的帮助,你们两位的方法都能解决!谢谢!
    不过我还有一个问题,“<qtitle>羽毛球PVC塑胶地板能&&比赛吗?</qtitle>”,我想通过正则表达式,把“&&”这个字符给替换掉!能实现吗?
      

  4.   

    通过正则replaceAll 不通过用replace