2016-10-22 5 views
0

スペースで囲まれる4桁の数字を取得したいと考えています。例: FOO 2420私はこれは私が文字列で4桁の数字が含まれていない正午前にもかかわらず、何の一致を返されていない正規表現はgroovyで動作しません

def courseNum = course.text =~ $/\b\d{4}\b/$ 
System.out.print(courseNum.group()) 

としてGroovyのためにこれを翻訳し、このパターン\ bは\ dの{4} \ bの を得何とか 使用regexr自分自身。

私は間違っていますか?

答えて

0

.group()は、java.lang.IllegalStateException: No match found例外を引き起こします。 0番目のインデックスcourseNum[0]で一致値にアクセスするだけです。

また、ここでは単純なスラッシュ文字列を使用します。これは、正規表現を定義するのに十分で便利なためです。

def text = "New 7234 pcs" 
def courseNum = text =~ /\b\d{4}\b/ 
print(courseNum[0]) 

文字列の開始を要求するように前後参照を使用して、あなたがスペース囲まなります4桁の数字を取得したいので、あなたが\bワード境界に頼る必要はありません、しかしthis Groovy demo

を参照してください。 /終了または空白4桁周り:

/(?<!\S)\d{4}(?!\S)/ 

regex demoを参照してください。

0

これを行うもう1つの良い方法は、findAll(regex)メソッドです。それが一致しない場合であっても([2443, 5003]

2443 
5003 

に結果の

​def text = "CSE 2443, MATH 5003" 
text.findAll(/\b\d{4}\b/).each { 
    println it 
} 

、それはあなたの現在のインスタンスのようなエラーではないでしょう。すべてを見つけると基本的にすべての一致が配列リストとして返されるので、より安全です。

関連する問題