[英]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.