[英]Java regular expressions for specific name\value format
我對Java正則表達式還不熟悉。 我想驗證具有以下格式的字符串:
String INPUT = "[name1 value1];[name2 value2];[name3 value3];";
namei和valuei是字符串,應包含除空格以外的任何字符。
我嘗試使用以下表達式:
String REGEX = "([\\S*\\s\\S*];)*";
但是,如果我調用matches(),即使獲得一個好的String,我也總是會得到false。
最好的正則表達式是什么?
這可以解決問題:
(?:\[\w.*?\s\w.*?\];)*
如果只想匹配其中三個,請用{3}
替換末尾的*
。
說明:
(?:
非捕獲組的開始
\\[
:轉義[
符號,它是正則表達式中的元字符。 這使其可以用於匹配。
\\w.*?
:懶惰地匹配任何單詞字符[az][AZ][0-9]_
。 延遲匹配表示它嘗試盡可能少地匹配字符,在這種情況下,這意味着當找到以下\\s
時將停止匹配。
\\s
:匹配一個空格
\\]
:請參見\\[
;
:匹配一個分號
)
:非捕獲組的結尾
*
:匹配前面的非捕獲組中包含的任何數量。
您應該使用方括號。 另外,如果您的目標是僅匹配三個,請將*
替換為{3}
(\[\\S*\\s\\S*\];){3}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.