2012-07-25 74 views
-1
工作

正则表达式我试图用的是string.replaceAll(正则表达式,更换)不适用于某些情况下

String re2="((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3}))[-:\\/.](?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1})))(?![\\d])"; // YYYYMMDD 1 

但是,当我尝试更换所有出现,

string.replaceAll(re2,getDate(dayForward,dateFormat)); 

没有按没有工作。并且,

matcher.appendReplacement(stringBuffer, getDate(dayForward,dateFormat)); 

只取代第一次出现。

有什么办法可以替代所有的事件吗?

+2

使用复杂的正则表达式字符串,它更有可能是您的正则表达式中的错误超过了匹配器或replaceAll。你能给我们提供更多关于你想要替换什么的信息,以及那个正则表达式应该匹配什么? – Charles 2012-07-25 16:11:38

+0

它如何“不起作用”? – Wormbo 2012-07-25 16:11:38

+1

正则表达式试图匹配“YYYYMMDD 1”?为什么不这样做更简单:(\ d {4})(\ d {2})(\ d {2})\ s * \ d {1}您可以添加?团体如果是可选的 – PaNaVTEC 2012-07-25 16:17:08

回答

0

你必须把结果在其他变量:

String replaced = string.replaceAll(re2,getDate(dayForward,dateFormat)); 

否则,就意味着你的正则表达式是不正确的。

相关问题