Scala 正規表現
val p = "[0-9]+".r //=> scala.util.matching.Regex = [0-9]+ p.pattern //=> java.util.regex.Pattern = [0-9]+
find
val p = "[0-9]+".r p.findAllIn("1 22") //=> scala.util.matching.Regex.MatchIterator = non-empty iterator p.findAllIn("1 22").toList //=> List[String] = List(1, 22,) p.findAllIn("a 1 22") //=> scala.util.matching.Regex.MatchIterator = non-empty iterator p.findAllIn("a 1 22").toList //=> List[String] = List(1, 22,) p.findAllIn("a") //=> scala.util.matching.Regex.MatchIterator = empty iterator p.findAllIn("a").toList //=> List[String] = List() p.findFirstIn("1 22") //=> Option[String] = Some(1) p.findFirstIn("a 1 22") //=> Option[String] = Some(1) p.findFirstIn("a") //=> Option[String] = None p.findPrefixOf("1 22") //=> Option[String] = Some(1) p.findPrefixOf("a 1 22") //=> Option[String] = None p.findPrefixOf("a") //=> Option[String] = None p.findFirstMatchIn("1 22") //=> Option[scala.util.matching.Regex.Match] = Some(1) p.findFirstMatchIn("a 1 22") //=> Option[scala.util.matching.Regex.Match] = Some(1) p.findFirstMatchIn("a") //=> Option[scala.util.matching.Regex.Match] = None p.findPrefixMatchOf("1 22") //=> Option[scala.util.matching.Regex.Match] = Some(1) p.findPrefixMatchOf("a 1 22") //=> Option[scala.util.matching.Regex.Match] = None p.findPrefixMatchOf("a") //=> Option[scala.util.matching.Regex.Match] = None
val p = "[0-9]+".r p.unapplySeq("1 22") //=> Option[List[String]] = None val p2 = "([0-9]+)".r p2.unapplySeq("1") //=> Option[List[String]] = Some(List(1)) p2.unapplySeq("1 22") //=> Option[List[String]] = None val p3 = "([0-9]+) ([0-9]+)".r p3.unapplySeq("1") //=> Option[List[String]] = None p3.unapplySeq("1 22") //=> Option[List[String]] = Some(List(1, 22)) val p2(n1) = "1" //=> n1: String = 1 val p2(n2) = "1 22" //=> scala.MatchError: 1 22 val p3(n3, n4) = "1" //=> scala.MatchError: 1 val p3(n5, n6) = "1 22" //=> n5: String = 1, n6: String = 22
val p = "[0-9]+".r val m = p.findFirstMatchIn("abc123xyz").get //=> m: scala.util.matching.Regex.Match = 123 m.matched //=> String = 123 m.before //=> java.lang.CharSequence = abc m.after //=> java.lang.CharSequence = xyz m.start //=> Int = 3 m.end //=> Int = 6 m.source //=> java.lang.CharSequence = abc123xyz m.groupCount //=> Int = 0 m.subgroups //=> List[String] = List()
group
val p = "([a-z]+)([0-9]+)([a-z]+)?".r val m = p.findFirstMatchIn("Aabc123Z").get //=> m: scala.util.matching.Regex.Match = abc123 m.matched //=> String = abc123 m.before //=> java.lang.CharSequence = A m.after //=> java.lang.CharSequence = Z m.start //=> Int = 1 m.end //=> Int = 7 m.source //=> java.lang.CharSequence = Aabc123Z m.groupCount //=> Int = 3 m.subgroups //=> List[String] = List(abc, 123, null) m.group(1) //=> String = abc m.before(1) //=> java.lang.CharSequence = A m.after(1) //=> java.lang.CharSequence = 123Z m.start(1) //=> Int = 1 m.end(1) //=> Int = 4 m.group(2) //=> String = 123 m.before(2) //=> java.lang.CharSequence = Aabc m.after(2) //=> java.lang.CharSequence = Z m.start(2) //=> Int = 4 m.end(2) //=> Int = 7 m.group(3) //=> String = null m.before(3) //=> java.lang.CharSequence = null m.after(3) //=> java.lang.CharSequence = null m.start(3) //=> Int = -1 m.end(3) //=> Int = -1
group name
val p = new scala.util.matching.Regex("""(\d+)([a-z]+)""", "kazu", "moji") val m = p.findFirstMatchIn("100abc").get m.groupNames //=> Seq[String] = Array(kazu, moji) m.group("kazu") //=> String = 100 m.group(1) //=> String = 100 m.group("moji") //=> String = abc m.group(2) //=> String = abc
replace
val p = "[0-9]+".r p.replaceAllIn("1 22", "X") //=> String = X X p.replaceAllIn("a 1 22", "X") //=> String = a X X p.replaceAllIn("a", "X") //=> String = a p.replaceFirstIn("1 22", "X") //=> String = X 22 p.replaceFirstIn("a 1 22", "X") //=> String = a X 22 p.replaceFirstIn("a", "X") //=> String = a
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html