java 正则表达式,懒惰匹配 以指定日期格式开头,求大神指点,50分奉上,还望不吝赐教
情况是这样的,有一个txt文本,里面的内容都是“2014-02-2709:52:41.608+一段内容A”、“2014-12-0711:42:41.908+一段内容B”、...
情况是这样的 ,有一个txt文本,里面的内容都是“2014-02-27 09:52:41.608+一段内容A”、“2014-12-07 11:42:41.908+一段内容B”、“2014-12-17 13:45:11.958+一段内容C”这样的很多段连接到一起,这里的内容A,内容B和内容C之间各种换行符,制表符,空格参杂其中,很多且十分杂乱。
现在想要按行读取,每读取一行,就用正则表达式,懒惰匹配一下,如果符合“2014-02-27 09:52:41.608+一段内容A”+“2014-12-07 11:42:41.908”+“不是结尾”,就符合条件,把一段内容A取出来,继续匹配,直到结束。
那么问题来了,符合“2014-02-27 09:52:41.608+一段内容A”+“2014-12-07 11:42:41.908”+“不是结尾”的正则表达式完全不会写啊
请问一下大神,我该怎么做?
每个”2014-02-27 09:52:41.608“这样的字符串都是一行的开头。 展开
现在想要按行读取,每读取一行,就用正则表达式,懒惰匹配一下,如果符合“2014-02-27 09:52:41.608+一段内容A”+“2014-12-07 11:42:41.908”+“不是结尾”,就符合条件,把一段内容A取出来,继续匹配,直到结束。
那么问题来了,符合“2014-02-27 09:52:41.608+一段内容A”+“2014-12-07 11:42:41.908”+“不是结尾”的正则表达式完全不会写啊
请问一下大神,我该怎么做?
每个”2014-02-27 09:52:41.608“这样的字符串都是一行的开头。 展开
1个回答
2014-12-30
展开全部
String regex = "\\d{4}([-]\\d{2}){2}\\s\\d{2}([:]\\d{2}){2}[.]\\d{3}";//2014-12-17 13:45:11.958 的正则
用这个区匹配就好了
追问
你这个正则表达式只能匹配到”2014-02-27 09:52:41.608“这样的字符串
你可能不明白我的意思,我想要匹配这个字符串以及其后面的部分,直到下一个”2014-02-27 09:52:41.608“开始的位置结束。
估计得用什么懒惰匹配或者贪婪匹配,我也不大懂,拜托了
追答
String regex = "\\d{4}([-]\\d{2}){2}\\s\\d{2}([:]\\d{2}){2}[.]\\d{3}[^\\d{4}((-)\\d{2}){2}\\s\\d{2}(:\\d){2}(.)\\d{3}]*";
//匹配符合2014-12-17 13:45:11.958+下一个regex的正则
这个算是懒惰匹配吧。新手,可能还有其它更效率的方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询