Groovy - 正则表达式的行为方式不应该如此

时间:2016-06-14 16:09:54

标签: regex groovy

我想从HTML文件中的一行中提取一个数字。我逐行读取文件,并希望通过使用正则表达式从相关行中获取数字。

我试过这样的话:

def reportFileContents = new File("-path to file-").text
                reportFileContents.eachLine{ line -> 

                    def valueMatcher = /[n50 length] [*]([0-9]+)/
                    def matcher = (line =~ valueMatcher)

                }

但是当我打印出我的“匹配器”时,我就会得到这样的结果:

java.util.regex.Matcher[pattern=[n50 length] [*]([0-9]+) region=0,22 lastmatch=]

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我假设你说你正在尝试匹配像[n50 length] [*]123这样的字符串?如果是这样,请参阅下面的示例。

def textWithMatches = '''blah blah blah [n50 length] [*]123 blah blah blah
                        |nothing here
                        |something else [n50 length] [*]321 something else'''.stripMargin()

def textWithNoMatches = 'no matches here'

assert (textWithMatches =~ /\[n50 length\] \[\*\](\d+)/).collect { it[1] } == [123, 321]
assert (textWithNoMatches =~ /\[n50 length\] \[\*\](\d+)/).collect { it[1] } == []