첫째, ... 는 추출기에서 목록을 얻기 - 심지어 매치
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 *가 이러한 방식으로 작동하지만 기본 라이브러리는 확실히 중첩 그룹을 지원합니다. 스칼라 API는 중첩 된 그룹을 노출시키지 않을뿐만 아니라 스칼라에 익숙해 져서 대부분의 다른 언어가 빠지기 쉬운 영역에서 빠져 나오지 않았습니다. 아, 그럼, 완벽에 대한 추구가 계속됩니다. – Malvolio
@Malvolio 아, 글쎄, 내가 그걸 줄께. 나는 그것이 효과가 있기를 바랬다. 아아, 나는 스칼라의 정규 표현식에 대한 오랜 사랑의 이야기를 싫어한다. 낙원을 엿볼 수는 있지만 뒤이어 계속되지 않습니다. 좋은 API로 정착했다면, 지금까지 교체 라이브러리를 만들었을 것입니다. –