正则表达式匹配和特殊外观的替代字符串

时间:2015-03-31 18:06:55

标签: java regex string replaceall

我有一组看起来像这样的字符串:

"AK Pz 310u PI-13-5","23.02.2015","07:45:00","23.02.2015","09:20:00","False","True","23.02.2015","07:40:00","2","Common","AK Pz 310u PI-13-5","Common"

使用单一正则表达式和replaceAll方法,我需要完全以下字符串:

2015-02-23 ==> 07:45 AK Pz 310u

我有一个匹配时间和日期的正则表达式

((0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.\d\d\d\d)|((([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9]))

我想我应该以某种方式利用捕获组。 字符串的这一部分:" AK Pz 310u PI-13-5"总是以大写字母开头,并以1到6之间的数字结束,所以我认为匹配那个字母非常简单。 但是,如何用正则表达式匹配所需的外观?如何将==>符号插入string.replaceAll方法? 有什么想法吗?

BTW:可能,如果原始任务太难,我可以在正则表达式中创建特定捕获组的二维数组,然后操纵输出。也许你可以告诉我如何做到这一点?

这是regex101.com链接https://regex101.com/r/vT7eK2/3

1 个答案:

答案 0 :(得分:0)

对于php我世界推荐这个正则表达式:

#^"(\w+) (\w+) (\w+) (?:.+?)","(\d+)\.(\d+)\.(\d+)","(\d+):(\d+):(\d+)"(?:.*?)$#i

和替换模式:

$6-$5-$4 ==> $7:$8 $1 $2 $3

我刚在这个网站https://ru.functions-online.com/preg_replace.html

上测试了它

我认为将这个php_replace regexp翻译成java regexp并不困难