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