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と以下の書籍を参考にしている。
問題自体は第2版のもの。
自分で考えるために他言語の例をGroovyで置き換えてる。
が、自分だけで書いてるとGroovyっぽくならいないのが玉にキズ。