首先,我很喜歡酷 ...獲取列表出提取的 - 甚至是比賽
scala> var nameRE = """\W*(\w+)\W+(\w+)\W*""".r
nameRE: scala.util.matching.Regex = \W*(\w+)\W+(\w+)\W*
scala> var nameRE(first, last) = "Will Smith "
first: String = Will
last: String = Smith
然後我就像混賬 ...
scala> var listOfVowels = "(([aeiou])*)".r
listOfVowels: scala.util.matching.Regex = (([aeiou])*)
scala> var listOfVowels(vowels:List[String]) = "uoiea"
<console>:7: error: scrutinee is incompatible with pattern type;
found : List[String]
required: java.lang.String
var listOfVowels(vowels:List[String]) = "uoiea"
現在我很喜歡呵呵 ...
scala> (listOfVowels findFirstMatchIn "uoiea" get) subgroups
res35: List[String] = List(a)
[如果我的問題並不明顯:我如何獲得一個模式匹配的所有子組的清單,理想情況是在提取器中,但無論如何不寫第二級匹配器。當然,這裏的正確答案是List(u, o, i, e, a)
。 ]
每個reqex * api *都可以這樣工作,但底層庫肯定支持嵌套組。 Scala API可能並不是單獨暴露嵌套組,但我已經習慣了Scala不會吸收大多數其他語言吸引的領域。啊,那麼追求完美還在繼續。 – Malvolio 2010-12-23 02:54:07
@Malvolio啊,好吧,我會給你的。我希望它也能工作。唉,我對Scala的正則表達式有着長期的愛和恨。它給人一瞥天堂,但未能貫徹。如果我已經確定了一個好的API,那麼我現在已經創建了一個替代庫。 – 2010-12-23 12:32:52