Tôi đang cố gắng để phù hợp trên một nhóm tùy chọn trong Scala 2.8 (beta 1) với đoạn mã sau:Scala: Kết hợp tùy chọn nhóm Regular Expression
import scala.xml._
val StatementPattern = """([\w\.]+)\s*:\s*([+-])?(\d+)""".r
def buildProperty(input: String): Node = input match {
case StatementPattern(name, value) => <propertyWithoutSign />
case StatementPattern(name, sign, value) => <propertyWithSign />
}
val withSign = "property.name: +10"
val withoutSign = "property.name: 10"
buildProperty(withSign) // <propertyWithSign></propertyWithSign>
buildProperty(withoutSign) // <propertyWithSign></propertyWithSign>
Nhưng điều này không hoạt động. Cách chính xác để phù hợp với các nhóm regex tùy chọn là gì?
Scala sử dụng phương thức Matcher.group trong Regex.unapplySeq. Điều này xác định rằng nếu một nhóm không khớp với một phần của chuỗi, thì null được trả về - –
Sẽ tốt hơn nếu Scala có thể sử dụng lớp Tùy chọn cho trường regex tùy chọn thay vì yêu cầu kiểm tra rỗng. –