File 如何在Groovy中获取部分行

File 如何在Groovy中获取部分行,file,parsing,text,groovy,line,File,Parsing,Text,Groovy,Line,我有几行文字看起来像这样: def s = '2011-11-08 10:43:47,153 INFO [ScanService thread] [SourceNode]' assert s[11..22] == '10:43:47,153' 2011-11-08 10:43:47153信息[ScanService thread][SourceNode]扫描/mongo/db/matcher.cpp 我想解析它们,只获取时间值10:43:47153 怎么能这样呢?通配符…?我只需要在空格上拆分

我有几行文字看起来像这样:

def s = '2011-11-08 10:43:47,153 INFO [ScanService thread] [SourceNode]'
assert s[11..22] == '10:43:47,153'
2011-11-08 10:43:47153信息[ScanService thread][SourceNode]扫描/mongo/db/matcher.cpp

我想解析它们,只获取时间值
10:43:47153


怎么能这样呢?通配符…?

我只需要在空格上拆分,或者如果日期格式为恒定宽度,则使用子字符串


正则表达式也可以工作,但如果没有必要,我就不麻烦了。

考虑以下情况:

def s = "2011-11-08 10:43:47,153 INFO [ScanService thread] [SourceNode]"
def tokens = s.split(" ")
def time = tokens[1]
println time

如果日期和时间是固定宽度的,我会像这样获取时间值:

def s = '2011-11-08 10:43:47,153 INFO [ScanService thread] [SourceNode]'
assert s[11..22] == '10:43:47,153'
给你:

08:13:16,121
09:32:42,102
10:43:47,153

您可以对正则表达式使用以下语法:
matcher=(log=~/\d{2}:\d{2}:\d{2}、\d{3}/)
并且忘记转义反斜杠:)谢谢,这很有效!我怎样才能像你们一样成为groovy大师呢?
matcher=…
分配具体做了什么?
matcher
只是
java.util.regex.matcher
的一个实例,它是在将模式应用于日志字符串之后构建的:)