070:文字列が正規表現として正しいか調べる

お題

文字列が正規表現として正しいかどうかを調べる。

コード

import java.util.regex.Pattern

def validRegexp(pattern){
    try {
        Pattern.compile(pattern)
        true
    } catch (e) {
        false
    }
}

assert validRegexp("aaa*") == true
assert validRegexp("*.") == false
assert validRegexp(/[\x81-\x9f\xe0-\xef][x400\x73\x80-\xfc]/) == true
assert validRegexp(/[\x81-\x9f\xe0-\xef][x400\x73\x80-\xfc/) == false
assert validRegexp(/[あ-ん]/) == true
assert validRegexp(/[!-~]/) == true


validRegexpの中のreturnを省略して書いてみたが、なんかむずかゆい。
Rubyのレシピ本と同じように正規表現として使えるかはコンパイルしてみてる。
他の方法ってなんかあるのかな。



添削歓迎

ここ間違ってるよ
こうした方がGroovyらしくないか?
などなど
方法は、コメント、トラックバックはてブTwitter @orange_clover宛 で、お願いします。



実行環境




Groovyの詳細についてはJavadocと以下の書籍を参考にしている。




関谷 和愛、上原 潤二、須江 信洋、中野 靖治
価格: ¥ 3,360
価格は記載時点のものです。購入前にAmazonでご確認ください。

「プログラミングGROOVY」正誤表




問題自体は第2版のもの。
自分で考えるために他言語の例をGroovyで置き換えてる。
が、自分だけで書いてるとGroovyっぽくならいないのが玉にキズ。




青木 峰郎、後藤 裕蔵、高橋 征義、まつもと ゆきひろ

価格: ¥ 2,940
価格は記載時点のものです。購入前にAmazonでご確認ください。