Regex Scala正则表达式匹配失败,Scala.MatchError用于\w和\d(字或数字)匹配
我在尝试一些基本的正则表达式模式匹配。虽然我的语法似乎是正确的,但当我使用Regex Scala正则表达式匹配失败,Scala.MatchError用于\w和\d(字或数字)匹配,regex,scala,Regex,Scala,我在尝试一些基本的正则表达式模式匹配。虽然我的语法似乎是正确的,但当我使用\w或\d进行单词和数字匹配时,它失败了 import scala.util.matching.Regex object ex { def main(args:Array[String]):Unit = { val pattern = new Regex("(\\w)\\s(\\d)"); val pattern(words,num) = "asas1 11" print(words+" "
\w
或\d
进行单词和数字匹配时,它失败了
import scala.util.matching.Regex
object ex {
def main(args:Array[String]):Unit = {
val pattern = new Regex("(\\w)\\s(\\d)");
val pattern(words,num) = "asas1 11"
print(words+" "+num)
}
}
这是我得到的错误:
Exception in thread "main" scala.MatchError: asas1 11 (of class java.lang.String)
at com.cccu.semantic.ex$.main(ex.scala:8)
at com.cccu.semantic.ex.main(ex.scala)
注意:我使用的是Eclipse SDK的Scala IDE版本,版本ID为4.4.1,在Windows机器上使用Scala 2.11.8。
\w
和\d
将匹配单个字符,您需要在那里添加+
修饰符。它正在引发异常,因为它无法将输入与正则表达式匹配
scala> val pattern = new Regex("(\\w+)\\s(\\d+)"); val pattern(words,num) = "asas1 11"
pattern: scala.util.matching.Regex = (\w+)\s(\d+)
words: String = asas1
num: String = 11
\w
和\d
将匹配单个字符,您需要在其中添加+
修饰符。它正在引发异常,因为它无法将输入与正则表达式匹配
scala> val pattern = new Regex("(\\w+)\\s(\\d+)"); val pattern(words,num) = "asas1 11"
pattern: scala.util.matching.Regex = (\w+)\s(\d+)
words: String = asas1
num: String = 11
\w\s\d
将实际匹配OP提供的测试字符串中的1
。@Tomalak如果您错了,它将引发一个异常,如您所见。根据文档:“然而,请注意,当正则表达式被用作模式匹配中的提取器时,只有当整个文本都可以匹配时,它才会成功。”啊,我明白了。我正在查看正则表达式本身。\w\s\d
实际上会匹配OP提供的测试字符串中的11
。@Tomalak如果您错了,它会抛出一个异常,您可以看到。根据文档:“然而,请注意,当正则表达式被用作模式匹配中的提取器时,只有当整个文本都可以匹配时,它才会成功。”啊,我明白了。我在看regex本身。