我试图从一个大字符串中提取几个值,我很难提取它们,我厌倦了一些正则表达式模式,但它们总是给我不匹配的结果。无论如何,它们似乎在可用的在线正则表达式站点中有效,但在Scala中无效。我想做的是
供应商名称
MO_May_MS_5.0&Rev_6.01
08765J54U3K4QVR0&0
我试图从输入字符串中提取这三个值,但无法做到。
提前谢谢。
//输入值
val device:String= "ESSSTOR\\Disk&Ven_VendorName&Prod_MO_Might_MS_5.0&Rev_6.01\\08765J54U3K4QVR0&0"
val proReg= """.*[Prod_]([^\\\\]*)""".r
// """.*Prod_([^\\\\]*)""".r -- no match as output
// """(?:Prod_)([^\\\\]*)""".r -- no match as output
println("Device: "+device)
// method -1:
device match{
case proReg(prVal) => println(s"$prVal is product val")
case _ => println("no match") }
// method-2 :
val proReg(g1) = "ESSSTOR\\Disk&Ven_VendorName&Prod_MO_Might_MS_5.0&Rev_6.01\\08765J54U3K4QVR0&0"
println(s"group1: $g1 ")
O/P:
Device: ESSSTOR\Disk&Ven_VendorName&Prod_MO_Might_MS_5.0&Rev_6.01\08765J54U3K4QVR0&0
//method-1
no match
// method-2
error
//用于开发序列的正则表达式构建
val serReg = """(?:Prod_\\S*[\\\\])(.*)""".r
device match {
case serReg(srVal) => println(s"$srVal is product val")
case _ => println("no match")
}
o/p:
no match
//供应商的正则表达式
val venReg="""(?:Ven_)([^&]*)""".r
device match {
case venReg(vnVal) => println(s"$vnVal is vendor val")
case _ => println("no match")
}
o/p:
no match