Groovy で動作する正規表現の生成に問題があります。
私の目的は: 次のような文字列が与えられた場合:
/products/prodA/index-tab2.html
最後の / の後の文字列に "-tab"n".html" が含まれている場合に一致を返す一致を取得するには
私の最初の試みは
([^\/]+)(?<=-tab[0-9]\.html$)
ここでテストしたものhttp://gskinner.com/RegExr/次のテストデータに対して:
/products/prodA/index-tab2.html
/products/prodA/index.html
/products-tab2/prodA/index-tab2.html
「index-tab2.html」で一致しました-これまでのところとても良いです(またはそう思っていました)。
次のステップは、これをGroovyに入れることです:
log.info("KPF: pageName is ${pageName} ")
def matcher = pageName =~ /([^\/]+)(?<=tab[0-9]\.html$)/
if (matcher.matches()) {
log.debugEnabled && log.debug("KPF: Filename has tab = $filename")
} else {
log.debugEnabled && log.debug("KPF: Filename does not have tab")
}
ただし、入力でコードをテストすると
/products/prodA/index-tab2.html (末尾のスペースはありません - 検証済み - ただし、この例では除外されています)
次のログが記録されます。
2013-07-02~12:51:10 INFO (xxx.site.controllers.PageController @ line 35) KPF: pageName is /products/prodA/index-tab2.html (xxx)
2013-07-02~12:51:10 DEBUG (xxx.site.controllers.PageController @ line 44) KPF: Filename does not have tab (xxx)
では、どの正規表現が「間違っている」ので、必要な一致を取得するにはどうすればよいですか?