Regex 将字符串与正则表达式scala匹配

Regex 将字符串与正则表达式scala匹配,regex,scala,Regex,Scala,我编写了以下函数: import scala.util.matching.Regex val COL1 = "COL1" val COL2 = "COL2" val COL3 = "COL3" val COL4 = "COL4" val COL5 = "COL5" val reg = ".+-([\w\d]{3})-([\d\w]{3})-([\d\w]{3})-([\w]+)$-([\w]+)".r.unanchored val dataExtraction: String => Map

我编写了以下函数:

import scala.util.matching.Regex
val COL1 = "COL1"
val COL2 = "COL2"
val COL3 = "COL3"
val COL4 = "COL4"
val COL5 = "COL5"
val reg = ".+-([\w\d]{3})-([\d\w]{3})-([\d\w]{3})-([\w]+)$-([\w]+)".r.unanchored
val dataExtraction: String => Map[String, String] = {
  string: String => {
    string match {
      case reg(col1, col2, col3, col4, col5) =>
                 Map(COL1 -> col1, COL2 -> col2, COL3 -> col3, COL4 -> col4 ,COL5 -> col5 )
      case _  => Map(COL1 -> "", COL2 -> "", COL3 -> "", COL4 -> "" ,COL5 -> "" )
    }
  }
}
它应该解析字符串,如“dep-gll-cde3-l4-result”或“cde3-gll-dep-l4-result”


如果您知道如何定义一个正则表达式来解析这两个正则表达式,您可以使用以下正则表达式:

val reg = """(\w{3,4})-(\w{3})-(\w{3,4})-(\w+)-(\w+)""".r
您不需要将其取消编排,因为该模式匹配您的全部输入

请注意,在三引号字符串文本中,可以使用单个
\
定义反斜杠,在您的情况下,它们需要加倍。另外,请参阅
{3,4}
量词,这些量词对于您提供的案例来说似乎足够了


请参阅和。

您可以使用以下正则表达式:

val reg = """(\w{3,4})-(\w{3})-(\w{3,4})-(\w+)-(\w+)""".r
您不需要将其取消编排,因为该模式匹配您的全部输入

请注意,在三引号字符串文本中,可以使用单个
\
定义反斜杠,在您的情况下,它们需要加倍。另外,请参阅
{3,4}
量词,这些量词对于您提供的案例来说似乎足够了


请参阅和。

这不保持相同的顺序,我得到了:数据提取(“dfp-vll-cvi3-l2-result”)我得到了Map[String,String]=Map(COL4->l2,COL2->vll,COL3->cvi3,COL1->dfp,COL5->result)。有没有办法维持同样的秩序please@scalacode
Map
不保留项目的顺序,如果您需要保留顺序。这不保持相同的顺序,我得到了:dataExtraction(“dfp-vll-cvi3-l2-result”)我得到了Map[String,String]=Map(COL4->l2,COL2->vll,COL3->cvi3,COL1->dfp,COL5->result)。有没有办法维持同样的秩序please@scalacode
Map
不保留项目的顺序,如果您需要保留顺序。不需要发布重复的问题。下面的方法有什么问题吗?Scalacode,您的意思是您想要像
”(?:.*)(\w{3,4})(\w{3,4})(\w{3,4})-(\w+)-(\w+)(\w+)(\w+)“.r
”(?:./)(\w{3,4})-(\w{3,4})-(\w+)(\w+)(\w+)-).orc
?实际输入和预期输出是什么?不要发布重复的问题。没有必要发布重复的问题。下面的方法有什么问题吗?Scalacode,您的意思是您想要像
”(?:.*)(\w{3,4})(\w{3,4})(\w{3,4})-(\w+)-(\w+)(\w+)(\w+)“.r
”(?:./)(\w{3,4})-(\w{3,4})-(\w+)(\w+)(\w+)-).orc
?实际输入和预期输出是什么?不要发布重复的问题。