2016-06-14 6 views
0

HTMLファイルの行から数値を抽出したい。ファイルを1行ずつ読み込み、正規表現を使って問題の行から番号を取得したいとします。Groovy - 正規表現がそれと同じように動作しない

は、私はこのようにそれを試してみた:

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

あなたは、正規表現、特に最初の文字クラスブロックで何をしようとしていると思いますか分かりません。どのような場合でも、 "java.util.regex.Matcher"の型は正しいです。 http://docs.groovy-lang.org/latest/html/documentation/index.html#groovy-operatorsのような例をご覧ください。 –

+0

あなたの正規表現は理にかなっていません。 @ DavidM.Karrが指摘しているように、あなたの出力はまさにそれでなければならないものなので、その場合は何も間違ってはいません。あなたの正規表現の助けが必要な場合は、一致させることを含める必要があります。 – doelleri

答えて

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] } == [] 
関連する問題