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
Regex 在scala正则表达式中捕获单词、数字和连字符 我有一个包含单词/数字的字符串,中间可以包含连字符。我试图在Scala中使用正则表达式捕获这个字符串。 我尝试了[\w\d-]+和[\w\d-]+,但这总是返回null。如何使用连字符捕获单词/数字_Regex_Scala - Fatal编程技术网

Regex 在scala正则表达式中捕获单词、数字和连字符 我有一个包含单词/数字的字符串,中间可以包含连字符。我试图在Scala中使用正则表达式捕获这个字符串。 我尝试了[\w\d-]+和[\w\d-]+,但这总是返回null。如何使用连字符捕获单词/数字

Regex 在scala正则表达式中捕获单词、数字和连字符 我有一个包含单词/数字的字符串,中间可以包含连字符。我试图在Scala中使用正则表达式捕获这个字符串。 我尝试了[\w\d-]+和[\w\d-]+,但这总是返回null。如何使用连字符捕获单词/数字,regex,scala,Regex,Scala,e、 g.input string=Abc1-LT.json 用法: val pattern = """^([\w\d-]+).json$""".r pattern.findFirstMatchIn(name) match { case Some(m) => try{ m.subgroups.mkString("-") } .. 谢谢 首先,在Scala中,编译的正则表达式模式默认锚定,因此不需要^和$。而\d是\w的一个子集,因此也不需要它

e、 g.input string=Abc1-LT.json

用法:

val pattern = """^([\w\d-]+).json$""".r
pattern.findFirstMatchIn(name) match {
      case Some(m) => try{
          m.subgroups.mkString("-")
      }
..

谢谢

首先,在Scala中,编译的正则表达式模式默认锚定,因此不需要
^
$
。而
\d
\w
的一个子集,因此也不需要它

接下来,您的模式中只有一个捕获组,因此
子组
结果中只能有一个条目。这意味着
mkString()

最后,还有一种更简单的方法可以提取单个捕获组

val pattern = """([\w-]+).json""".r

name match {
  case pattern(sub) => s"-->$sub<--"  //res0: String = -->Abc1-LT<--
  case _ => "no match"
}
val pattern=“”([\w-]+).json”“。r
姓名匹配{

case pattern(sub)=>s”-->$subHow您是如何使用正则表达式来匹配字符串的?val pattern=“”^([\w\d]).json$”。rWhere是您的正则表达式中的
+
不会做任何事情,它只匹配一个组,不需要组合。