3

これが機能しない理由と修正方法を誰か教えてください。

val aorb = "(a|b)".r

aorb.findFirstIn("with a ")
res103: Option[String] = Some(a)

"with a " match { case aorb() => "have a or b" case _ => "None"}
res102: String = None

match ステートメントが「have a or b」を返すことを期待していました

実際の問題は、入力に対してより複雑な正規表現で一連の一致を試行し、最初に成功したパターンで値を返すことです。

4

2 に答える 2

8

パターン マッチング用の「固定された」正規表現は、入力全体に一致します。

val aorb = ".*(a|b).*".r

"with a " match {
  case aorb(_) => "have a or b"
  case _ => "None"
}
// res0: String = have a or b

正規表現にキャプチャ グループがある場合は、結果も使用するか、明示的に無視する必要があり_ますaorb(_)

于 2013-07-10T13:51:56.890 に答える