簡體   English   中英

用正則表達式scala匹配字符串

[英]matching a string with 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[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}量詞。

請參閱在線Scala演示regex演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM