代码之家  ›  专栏  ›  技术社区  ›  Chaitanya

检测负载的regex模式。*模式

  •  0
  • Chaitanya  · 技术社区  · 7 年前

    我要验证所有具有“payload.*”的字符串,即该字符串必须以“payload”开头,后跟句点(.)和最少1个字符。

    示例:

    Input1 :- payload.Hello     Output1 :-> Valid
    Input2 :- Hipayload.Hello     Output1 :-> InValid
    Input3 :- payload.H     Output1 :-> Valid
    Input4 :- payload.     Output1 :-> InValid
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   James Whiteley    7 年前

    你可以用 x.matches(y) (何处) x y 都是字符串)以与scala中的正则表达式模式匹配(或使用“原始”字符串):

    scala> val regex: String = "^payload\\..+"
    regex: String = ^payload\..+
    
    scala> val regexAltRaw: String = raw"^payload\..+"
    regexAltRaw : String = ^payload\..+
    
    scala> val regexAltTripleQuotes: String = """^payload\..+"""
    regexAltTripleQuotes : String = ^payload\..+
    
    scala> "".matches(regex)
    res0: Boolean = false
    
    scala> "payload.Hello".matches(regex)
    res1: Boolean = true
    
    scala> "Hipayload.Hello".matches(regex)
    res2: Boolean = false
    
    scala> "payload.H".matches(regex)
    res3: Boolean = true
    
    scala> "payload.".matches(regex)
    res4: Boolean = false
    

    为了解释这种模式:

    • ^payload -以“有效载荷”开头
    • \\. -”字面意思(如果不使用“原始”字符串,scala要求您使用双反斜杠来转义,而不是像在普通regex中那样使用单斜杠)
    • .+ -任何角色,一次或多次
        2
  •  0
  •   AGR    7 年前

    为了避免验证输入有效载荷。您可以使用愚蠢的正则表达式:

    ^payload\.[^.]+$
    
        3
  •  0
  •   RAGHHURAAMM    7 年前

    输入数组:

    val ar = Array("payload.Hello","Hipayload.Hello","payload.H","payload.")
    

    正则表达式字符串:

     val p = """^payload\..{1,}""" 
    

    在scala repl中:

    scala> val ar = Array("payload.Hello","Hipayload.Hello","payload.H","payload.")
    ar: Array[String] = Array(payload.Hello, Hipayload.Hello, payload.H, payload.)
    
    scala> val p = """^payload\..{1,}"""
    p: String = ^payload\..{1,}
    

    测试:

    scala> ar.map(x=>if(x.matches(p))"Valid" else "InValid")
    res3: Array[String] = Array(Valid, InValid, Valid, InValid)