簡體   English   中英

如何檢查輸入字符串是否與指定格式匹配?

[英]How to check if input string matches a specified format?

每個人。 我想在下面編寫一個匹配/驗證指定字符串模式的條件。

METRICS__video1::[VIEWS=1000,LIKES=20,DISLIKES=20]

應該沒有空間。 2 個字符串應在冒號 (::) 之前由 2 個下划線 (__) 連接。 在冒號之后,句子應該用方括號([])括起來。 句子應該在equals(=)之后有一個integer,在equals(=)之前有一個字符串,用逗號(,)分隔。

任何想法或什么是做到這一點的最佳方法。 提前致謝。

您可以將該字符串與此正則表達式匹配(java 版本,帶有雙反斜杠\\ ):

METRICS__video1::[VIEWS=1000,LIKES=20,DISLIKES=20]
String pattern = "\\w+__\\w+::\\[\\w+=\\d+(,\\w+=\\d+)+\\]"

解釋:

  • \\w+ : 1 個或多個字母或數字 ===> METRICS
  • __ 2 個下划線 ===> __
  • \\w+ : 1 個或多個字母或數字 --> video1
  • ::兩個冒號===> ::
  • \\[您需要轉義左方括號,因為它在正則表達式中具有特殊含義 ===> [
  • \\w+=\\d+第一對,包含一些字母或數字、一個等號和1個或多個數字 ===> VIEWS=1000
  • (,\\w+=\\d+)+以逗號開頭的組,包含一些字母或數字、等號、1 個或多個數字 - 最后的+表示可能有多個組 ===> (,LIKES=20)(,DISLIKES=20)
  • \\]右方括號 ==> ]

此正則表達式應該適用於您所描述的內容:

if (Pattern.matches("\\w+__\\w+::\\[((\\w+=\\d+)(,(?=\\w)|\\]$))+", yourStringHere)) {
    /* DO SOME STUFF */
}

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

暫無
暫無

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

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