最好是用一些初级的正则表达式的知识解决该问题,本人是刚进入编程这个行业,还没有太多的经验,希望高手们讲的简单一些,谢谢!!!

解决方案 »

  1.   

    这个根本就不要用正则表达式,直接用 indexOf 就可以了。
      

  2.   

    怎么用啊!!我主要是想用JAVA中的正则表达式一个文件是否是XML文件啊!!
    谁知XML中的第一句话就碰到这样的问题啊!
    我自己尝试着做了一下,发现这个字符串中有""号,我想应该用到拆分吧!!
    请问高手们应该怎么拆啊!!
    <?xml version="1.0" encoding="UTF-8"?>
    是上面的这个字符串啊!!
    最好是能提供一些比较好的例子代码!!
    谢谢了!!
    加高分啊!!
      

  3.   

    CSDN 的短消息我进不去了,估计网络出问题了,贴在这里哈import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {    private String[] encodings = {"utf-8", "gbk", "gb2312", "gb18030", "iso8859-1"};
        
        public static void main(String args[]) {
            String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                    "<test>\n" +
                    "    <a item=\"1\">1</a>\n" +
                    "</text>";
            System.out.println(xml);
            System.out.println();
            Test t = new Test();
            System.out.println(t.checkXml(xml));
        }
        
        private boolean checkXml(String xml) {
            String regex = "<\\?xml\\s+version=\"1.0\"\\s+encoding=\"(.*?)\"\\?>";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(xml);
            boolean b = false;
            String encoding = null;
            while(matcher.find()) {
                if(!b) {
                    b = true;
                    encoding = matcher.group(1);                
                }else{
                    return false;
                }
            }
            return isEncoding(encoding);
        }
        
        private boolean isEncoding(String encoding) {
            for(int i = 0; i < encodings.length; i++) {
                if(encodings[i].equalsIgnoreCase(encoding)) {
                    return true;
                }
            }
            return false;
        }
    }
      

  4.   

    bao110908 这位高手我想再请教你一下:如果是从文件里面读取呢?应该怎么处理呢?
    如应该用哪种输入流和输出流,这个字符串里面套双引号应该怎么处理呢??
      

  5.   

    可以用 BufferedReader 来读文件啊读出来的字符串引号不需要处理,需要处理的仅仅是在 Java 源文件中引号。
      

  6.   

    这样吧!我把我的源码贴出来,你看一下吧!!
    我的源代码如下:
    package wang.regex.file;import java.io.*;
    import java.util.regex.*;public class RegexFile
    { public static void main(String[] args)
    {
    // TODO 自动生成方法存根
    try
    {
    File f=new File("D:\\正则表达式解析xml\\lianxi01.xml");
    FileReader fr=new FileReader(f);
    BufferedReader br=new BufferedReader(fr);
    String line=br.readLine();
    System.out.println(line);
    Pattern p=Pattern.compile("\\<\\?xml\\sversion="+"\\'1.0\\'"+"\\sencoding="+"\\'UTF-8\\'"+"\\?\\>");
    Matcher m=p.matcher(line);
    boolean b=m.matches();
    System.out.println("加上读取文件时的匹配了:"+b);
    } catch (FileNotFoundException e)
    {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    System.out.println("没有发现该文件!!");
    } catch (IOException e)
    {
    // TODO 自动生成 catch 块
    System.out.println("读取文件失败!!");
    e.printStackTrace();
    }
    }
    }
    我这个是比较的简单,我用JAVA读出来的就是含有"",影响了我的正则匹配,我想请问一下这个问题该怎么处理呢???
    谢谢!!!
      

  7.   


    String reg = "<\\?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"\\?>";
    Pattern p = Pattern.compile(reg);
      

  8.   

    Pattern p=Pattern.compile("\\<\\?xml\\sversion="+"\\'1.0\\'"+"\\sencoding="+"\\'UTF-8\\'"+"\\?\\>"); 这个怎么会对呢,一看就是不对的Pattern p=Pattern.compile("<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>");
    这样就差不多了
      

  9.   

    谢稿believefym 这位朋友,它帮我解决了第一个问题!我总结一下:如果用输入流读出来的字符串中有""号的话,我们应该用
    \\\"来进行转义噢!!
    还有一个问题,就是用正则表达式怎么去匹配整个XML文件呢????
    我想过用BufferReader一次读一行,来进行匹配,可我越想越复杂,有哪位高手练练手,用正则表达式来匹配整个XML文件呢
    谢谢!
      

  10.   

    楼主为什么一定要用正则表达式来匹配整个xml文件呢?这个难度挺大的吧。讲讲你的需求啊?
      

  11.   

    还有也要谢谢bao110908.您所说的用\"进行转义也是对的.