簡體   English   中英

特定名稱\\值格式的Java正則表達式

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

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