読者です 読者をやめる 読者になる 読者になる

072:文字列が複数の正規表現のすべてにマッチするか調べる

Groovy

お題

文字列が複数の正規表現のすべてにマッチするか調べる

コード

/*「あ」を含むか? */
assert "めぐりあい" =~/あ/


/*「あ」と「い」を両方含むか?*/
assert "めぐりあい" =~/(?=.*?あ).*?い/ 
assert "いあいあ" =~/(?=.*?あ).*?い/ 
assert !("IA-64" =~/(?=.*?あ).*?い/)
str ="""
め
ぐ
り
あい
"""
assert !(str =~/((?m)=.*?あ).*?い/)



/* 指定した文字が含まれるか? */
def rexpAnd (String target,String... regxp){
    for ( re in regxp) {
        if (! (target =~ re)) {
            return false
        }
    }
    return true
    
}

def someMethod(String... re) {
    result = []
    ["ああ", "あい", "あう", "あえ", "あお"].each{ str ->
        if (rexpAnd(str, re)) {
            result<< str
        }
    }
    return result
}


assert someMethod(/う/) == ["あう"]
assert someMethod(/あ/,/い/) == ["あい"]
assert someMethod(/あ/) == ["ああ", "あい", "あう", "あえ", "あお"]

/(?=.*?あ).*?い/だと改行コードが絡むと上手くいかない。
素直に2回マッチさせた。

添削歓迎

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



実行環境




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






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




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




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






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

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