我写了如下的代码String strDateText = "sdfgnhfdnjh2013年7月01日sdgldfjhggkfp";
String regex = "[(\\d{4}年\\d{1,2}月)|(\\d{4}年\\d{1,2}月\\d{1,2}日)]";
Matcher m = Pattern.compile(regex).matcher(strDateText );
while(m.find()){
String t = m.group();
System.out.println("t:" + t);
fdatDate = t.replaceAll("年|月|日", "/");
}为什么执行的结果是t:2
t:0
t:1
t:3
t:年
t:7
t:月
t:0
t:1
t:日我想要的结果是:
t:2013年7月1日
正则表达式Java
String regex = "[(\\d{4}年\\d{1,2}月)|(\\d{4}年\\d{1,2}月\\d{1,2}日)]";
Matcher m = Pattern.compile(regex).matcher(strDateText );
while(m.find()){
String t = m.group();
System.out.println("t:" + t);
fdatDate = t.replaceAll("年|月|日", "/");
}为什么执行的结果是t:2
t:0
t:1
t:3
t:年
t:7
t:月
t:0
t:1
t:日我想要的结果是:
t:2013年7月1日
正则表达式Java
解决方案 »
- IBM WebSphere Integratioin Developer在cvs上无法比对java类代码
- 搭配Eclipse+MyEclipse的开发环境的问题??
- 页面跳转回来后,背景图片全没了.这是怎么回事?
- 请教关于nested:define的问题!在线等着。。急啊
- J2EE的源码有没有开放? 哪有下载?
- 请问main(String args[])中args的用处,给出例子最好。
- ant时出现class file has wrong version 48.0, should be 47.0的错误。
- weblogic8如何配置ms sql 2000?
- 急!请教熟悉jdom的大虾,为什么在服务器端解析的内容在textArea中显示时多出一个空白行?
- 公司很长时间没项目做,郁闷,谁有做不完的项目?(价格优惠)
- 用nexus搭建私服无法搜索构件
- 想请教使用snmp4j做服务器监控一些经验
然后解释一下为什么你的错误
因为你使用了多选组[],在[]里的大部分元字符都是无效的,意思是(,*,?,|,{,}等这样的字符不再是元字符,而就匹配一个(,*,?,|,{,}。
你的正则表达式就是匹配一下字符、
数字 { } 4 1 2 逗号 年 月 日 ( ) |
String regex = "[(\\d{4}年\\d{1,2}月)|(\\d{4}年\\d{1,2}月\\d{1,2}日)]";
Matcher m = Pattern.compile(regex).matcher(strDateText );
StringBuffer str = new StringBuffer();
while(m.find()){
String t = m.group();
System.out.println("t:" + t);
str.append(t);
fdatDate = t.replaceAll("年|月|日", "/");
}
System.out.println("t"+str);
String regex = "[(\\d{4}年\\d{1,2}月)|(\\d{4}年\\d{1,2}月\\d{1,2}日)]";
Matcher m = Pattern.compile(regex).matcher(strDateText );
StringBuffer str = new StringBuffer();
String fdatDate ;
while(m.find()){
String t = m.group();
System.out.println("t:" + t);
str.append(t);
fdatDate = t.replaceAll("年|月|日", "/");
}
System.out.println(str);
System.out.println(str.toString().replaceAll("年|月|日", "/").substring(0,str.length()-1));
俺也偷懒改写了个简单点的: String strDateText = "sdfgnhfdnjh2013年7月01日sdgldfjhggkfp";
String strDateText2 = "sdfgnhfdnjh2013年7月sdgldfjhggkfp"; String regex = "((\\d{4}年\\d{1,2}月\\d{1,2}日)|(\\d{4}年\\d{1,2}月))";
Pattern p = Pattern.compile(regex); Matcher m = p.matcher(strDateText );
if(m.find())
{
System.out.println(m.group(1));
}
m = p.matcher(strDateText2);
if(m.find())
{
System.out.println(m.group(1));
}中括号改成小括号,里面的两个小括号顺序换了下,长的放前面。