Regex Pattern Within Case Class Pattern Using Scala
Regex Pattern Within Case Class Pattern Using Scala
这一定很愚蠢,但我想知道是否有人可以帮助我。 case class 匹配中的以下正则表达式模式匹配未按我的预期工作。有人可以提供一些见解吗?谢谢
object Confused {
case class MyCaseClass(s: String)
val WS = """\s*""".r
def matcher(myCaseClass: MyCaseClass) = myCaseClass match {
case MyCaseClass(WS(_)) => println("Found WS")
case MyCaseClass(s) => println(s"Found >>$s<<")
}
def main(args: Array[String]): Unit = {
val ws = " "
matcher(MyCaseClass(ws))
}
}
我希望模式匹配中的第一个案例是匹配的,但事实并非如此。
这会打印
Found >> <<
应该是:
val WS = """(\s*)""".r
对于你的问题,你想要匹配空格模式,在 Scala,
A regular expression is used to determine whether a string matches a
pattern and, if it does, to extract or transform the parts that match.
为了提取匹配部分,我们需要使用 group
来对字符串进行模式化。这意味着我们需要使用 parentheses
来围绕我们的模式字符串。
示例:
val date = """(\d\d\d\d)-(\d\d)-(\d\d)""".r
"2004-01-20" match {
case date(year, month, day) => s"$year was a good year for PLs."
}
这一定很愚蠢,但我想知道是否有人可以帮助我。 case class 匹配中的以下正则表达式模式匹配未按我的预期工作。有人可以提供一些见解吗?谢谢
object Confused {
case class MyCaseClass(s: String)
val WS = """\s*""".r
def matcher(myCaseClass: MyCaseClass) = myCaseClass match {
case MyCaseClass(WS(_)) => println("Found WS")
case MyCaseClass(s) => println(s"Found >>$s<<")
}
def main(args: Array[String]): Unit = {
val ws = " "
matcher(MyCaseClass(ws))
}
}
我希望模式匹配中的第一个案例是匹配的,但事实并非如此。
这会打印
Found >> <<
应该是:
val WS = """(\s*)""".r
对于你的问题,你想要匹配空格模式,在 Scala,
A regular expression is used to determine whether a string matches a pattern and, if it does, to extract or transform the parts that match.
为了提取匹配部分,我们需要使用 group
来对字符串进行模式化。这意味着我们需要使用 parentheses
来围绕我们的模式字符串。
示例:
val date = """(\d\d\d\d)-(\d\d)-(\d\d)""".r
"2004-01-20" match {
case date(year, month, day) => s"$year was a good year for PLs."
}