指定された正規表現:
val FollowRE = """(?i)(?<=follow)(\s+(me|@[A-Za-z\d_]+))+""".r
コードスニペット:
"@foo follow me" match {
case FollowRE() => "baz"
case _ => "foo"
}
しかし、それは"foo"
枝を取ります。部分的な正規表現の一致を許可して、"baz"
分岐を取ることはできますか?
指定された正規表現:
val FollowRE = """(?i)(?<=follow)(\s+(me|@[A-Za-z\d_]+))+""".r
コードスニペット:
"@foo follow me" match {
case FollowRE() => "baz"
case _ => "foo"
}
しかし、それは"foo"
枝を取ります。部分的な正規表現の一致を許可して、"baz"
分岐を取ることはできますか?
一致には、正規表現がキャプチャ グループを持っているのと同じ数のパターン変数 (または_
、対応するキャプチャを無視するためのワイルドカード) が必要です。あなたのREの場合、それは2つのキャプチャグループですが、一致させることはできません(REには作業が必要だと思います)。
補遺
どうやら私はポイントを逃した。フローティングマッチが必要です。match
そのエクストラクターでの Scala Regex マッチング (コンストラクトで使用したときに得られるもの) は、 findではなくmatchです。したがって、検索のように機能させたい場合は、パターンの最初と最後に配置する必要があります。.*