用java正则表达式匹配这个字符串(<?xml version="1.0" encoding="UTF-8"?>)请各位高手们帮忙 最好是用一些初级的正则表达式的知识解决该问题,本人是刚进入编程这个行业,还没有太多的经验,希望高手们讲的简单一些,谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个根本就不要用正则表达式,直接用 indexOf 就可以了。 怎么用啊!!我主要是想用JAVA中的正则表达式一个文件是否是XML文件啊!!谁知XML中的第一句话就碰到这样的问题啊!我自己尝试着做了一下,发现这个字符串中有""号,我想应该用到拆分吧!!请问高手们应该怎么拆啊!!<?xml version="1.0" encoding="UTF-8"?>是上面的这个字符串啊!!最好是能提供一些比较好的例子代码!!谢谢了!!加高分啊!! 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; }} bao110908 这位高手我想再请教你一下:如果是从文件里面读取呢?应该怎么处理呢?如应该用哪种输入流和输出流,这个字符串里面套双引号应该怎么处理呢?? 可以用 BufferedReader 来读文件啊读出来的字符串引号不需要处理,需要处理的仅仅是在 Java 源文件中引号。 这样吧!我把我的源码贴出来,你看一下吧!!我的源代码如下: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读出来的就是含有"",影响了我的正则匹配,我想请问一下这个问题该怎么处理呢???谢谢!!! String reg = "<\\?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"\\?>"; Pattern p = Pattern.compile(reg); Pattern p=Pattern.compile("\\<\\?xml\\sversion="+"\\'1.0\\'"+"\\sencoding="+"\\'UTF-8\\'"+"\\?\\>"); 这个怎么会对呢,一看就是不对的Pattern p=Pattern.compile("<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>");这样就差不多了 谢稿believefym 这位朋友,它帮我解决了第一个问题!我总结一下:如果用输入流读出来的字符串中有""号的话,我们应该用\\\"来进行转义噢!!还有一个问题,就是用正则表达式怎么去匹配整个XML文件呢????我想过用BufferReader一次读一行,来进行匹配,可我越想越复杂,有哪位高手练练手,用正则表达式来匹配整个XML文件呢谢谢! 楼主为什么一定要用正则表达式来匹配整个xml文件呢?这个难度挺大的吧。讲讲你的需求啊? 还有也要谢谢bao110908.您所说的用\"进行转义也是对的. 如何在一个网站里既有asp页面,也有jsp页面 Dialog显示后为何不执行下去? 关于mysql中文数据的问题 多少分升 * 啊,谁告诉我一下哦,谢谢了 java新手提问:如何利用泛型实现一个一维数组操作类,可加入任意类型的数据。 哎!文件拷贝之后,里面的中文就成了乱码了.怎么才能让中文显示正常??? freejacky请进! 绝对一个难题..... 帮帮忙? 谁有jb7的注册码?能发给我吗? for循环内初始化的问题。 数组遍历的简单方法,但我感觉别扭呢??
谁知XML中的第一句话就碰到这样的问题啊!
我自己尝试着做了一下,发现这个字符串中有""号,我想应该用到拆分吧!!
请问高手们应该怎么拆啊!!
<?xml version="1.0" encoding="UTF-8"?>
是上面的这个字符串啊!!
最好是能提供一些比较好的例子代码!!
谢谢了!!
加高分啊!!
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;
}
}
如应该用哪种输入流和输出流,这个字符串里面套双引号应该怎么处理呢??
我的源代码如下:
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读出来的就是含有"",影响了我的正则匹配,我想请问一下这个问题该怎么处理呢???
谢谢!!!
String reg = "<\\?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"\\?>";
Pattern p = Pattern.compile(reg);
这样就差不多了
\\\"来进行转义噢!!
还有一个问题,就是用正则表达式怎么去匹配整个XML文件呢????
我想过用BufferReader一次读一行,来进行匹配,可我越想越复杂,有哪位高手练练手,用正则表达式来匹配整个XML文件呢
谢谢!