Changeset 5616

Show
Ignore:
Timestamp:
01/27/08 14:07:06 (5 years ago)
Author:
keisuken
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/scala/sandbox/src/jp/ne/cappuccino/keisuken/util/regex/Regex.scala

    r5615 r5616  
    33 */ 
    44 
    5 package jp.ne.cappuccino.keisuken.util.regex { 
     5package jp.ne.cappuccino.keisuken.util.regex 
    66 
    7   import scala.collection.mutable._ 
    8   import java.util.regex._ 
     7import scala.collection.mutable._ 
     8import java.util.regex._ 
    99 
    10   class Regex(pat: Pattern) { 
    11     def this(regex: String) = this(Pattern.compile(regex)) 
    12     def matches(input: String): Match = new Match(pat.matcher(input), input) 
    13     def =~(input: String): Boolean = matches(input).matches 
     10class Regex(pat: Pattern) { 
     11  def this(regex: String) = this(Pattern.compile(regex)) 
     12  def matches(input: String): Match = new Match(pat.matcher(input), input) 
     13  def =~(input: String): Boolean = matches(input).matches 
     14} 
     15 
     16class Match(mat: Matcher, input: String) { 
     17  def matches: Boolean = {mat.reset(); mat.find()} 
     18  def toArray: Array[String] = { 
     19    var array = new ArrayBuffer[String](); 
     20    while(mat.find()) array += input.substring(mat.start(), mat.end()) 
     21    array.toArray 
    1422  } 
     23  def each(f: String => Unit): Boolean = { 
     24    var matched = false 
     25    mat.reset() 
     26    while(mat.find()) { 
     27      f(input.substring(mat.start(), mat.end())) 
     28      matched = true 
     29    } 
     30    matched 
     31  } 
     32} 
    1533 
    16   class Match(mat: Matcher, input: String) { 
    17     def matches: Boolean = {mat.reset(); mat.find()} 
    18     def toArray: Array[String] = { 
    19       var array = new ArrayBuffer[String](); 
    20       while(mat.find()) array += input.substring(mat.start(), mat.end()) 
    21       array.toArray 
    22     } 
    23     def each(f: String => Unit): Boolean = { 
    24       var matched = false 
    25       mat.reset() 
    26       while(mat.find()) { 
    27         f(input.substring(mat.start(), mat.end())) 
    28         matched = true 
    29       } 
    30       matched 
    31     } 
    32   } 
     34object RE { 
     35  def apply(regex: String) = new Regex(regex) 
     36  def apply(regex: String, input: String) = new Regex(regex).matches(input) 
     37} 
    3338 
    34   object RE { 
    35     def apply(regex: String) = new Regex(regex) 
    36     def apply(regex: String, input: String) = new Regex(regex).matches(input) 
    37   } 
    38  
    39   object RegexTest { 
    40     def main(args: Array[String]) { 
    41       println(RE("[A-Za-z]+") =~ "123456789") 
    42       println(RE("[A-Za-z]+") =~ "This is a pen.") 
    43       println(RE("[A-Za-z]+", "This is a pen.").each {str => 
    44         println(str) 
    45       }) 
    46       for(str <- RE("[A-Za-z]+", "This is a pen.")toArray) { 
    47         println(str) 
    48       } 
     39object RegexTest { 
     40  def main(args: Array[String]) { 
     41    println(RE("[A-Za-z]+") =~ "123456789") 
     42    println(RE("[A-Za-z]+") =~ "This is a pen.") 
     43    println(RE("[A-Za-z]+", "This is a pen.").each {str => 
     44      println(str) 
     45    }) 
     46    for(str <- RE("[A-Za-z]+", "This is a pen.").toArray) { 
     47      println(str) 
    4948    } 
    5049  }