Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Scala正则表达式匹配失败,Scala.MatchError用于\w和\d(字或数字)匹配_Regex_Scala - Fatal编程技术网

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本身。