根据正则表达式的位置拆分字符串

时间:2014-06-18 10:01:27

标签: regex string split

我需要转换这个(日期)String" 12112014"至" 12.11.2014"

我想要的是:

拆分前2个字符串" 12",添加"。", 然后将字符串从3-4拆分为" 11",添加"。" 在最后分割最后4个字符串(或5-8)以获得" 2012"

我已经找到了如何获得前2个字符(" ^ \ d {2}"),但我没有根据位置获得字符。

3 个答案:

答案 0 :(得分:0)

如果没有指定您之后使用的语言,我已经选择了javascript:

var s = '12012011';
var s2 = s.replace(/(\d{2})(\d{2})(\d{4})/,'$1.$2.$3'));
console.log(s2);  // prints "12.01.2011"

它的要点是您使用()指定正则表达式中的组,然后可以使用替换表达式中的组。

在Java中相同:

String s = "12012011";
String s2 = s.replaceAll("(\\d{2})(\\d{2})(\\d{4})", "$1.$2.$3");
System.out.println(s2);

答案 1 :(得分:0)

我不认为只有拆分才能做到这一点。

您可以将表达式扩展为:

"(^(\d{2})(\d{2})(\d{4}))"

然后使用您选择的Regex语言访问组并构建所需的字符串。

请注意 - 除了所有正则表达式学习之外 - 您还可以将原始字符串解析为强类型Date或DateTime变量,并使用适当的语言环境输出值。

答案 2 :(得分:0)

无论编程语言是什么,您都应该尝试从字符串中提取数字,然后使用“。”将它们连接起来。

在perl中,它可以完成:

$_ = '12112014';

s/(\d{2})(\d{2})(\d{4})/$1.$2.$3/;

print "$_";