入力に与えられた任意の文字列に一致する正規表現を作成する関数を作成したいと考えています。たとえば、123$
を入力すると、と一致し、の最後に123
と一致しません。正規表現として渡されるエスケープ文字列
def convert(xs: String) = (xs map (x => "\\"+x)).mkString
val text = """ 123 \d+ 567 """
val x = """\d+"""
val p1 = x.r
val p2 = convert(x).r
println(p1.toString)
\d+ // regex to match number
println((p1 findAllIn text).toList)
List(123, 567) // ok, numbers are matched
println(p2.toString)
\\\d\+ // regex to match "backshash d plus"
println((p2 findAllIn text).toList)
List() // nothing matched :(
だから、最後findAllIn
は、テキスト内の\d+
を見つける必要がありますが、それはしていません。ここで何が間違っていますか?
あなたがしようとしていますあなたのスクリプト内に正規表現を生成するには?私はその疑問を確信しています。 Javaでは\を別の\でエスケープする必要があります。空白と一致する\\ s。スカラー言語がわからない –
'' d ''(文法的に) ''テキスト ''に '' + ''が含まれていない場合、それをどのように見つけるべきですか? –
@mhs:ups、typo。しかし、それはまだ動作しません。 –