Regex 在scala正则表达式中捕获单词、数字和连字符 我有一个包含单词/数字的字符串,中间可以包含连字符。我试图在Scala中使用正则表达式捕获这个字符串。 我尝试了[\w\d-]+和[\w\d-]+,但这总是返回null。如何使用连字符捕获单词/数字
e、 g.input string=Abc1-LT.json 用法: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的一个子集,因此也不需要它
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是您的正则表达式中的+
不会做任何事情,它只匹配一个组,不需要组合。