[英]Regex pattern with positive and negative lookahead
我有一個[key1=value1, key2=value2]
這樣的字符串。 它還可能只包含一個鍵,例如[key1=value1]
或更多鍵。 如何編寫正則表達式來檢索
預期
Group1: key1=value1
Group2: key2=value2
我在這里嘗試過模式/(?<=\\[)(.*)=(.*)(,)*(?=\\])/
,但這給了我
實際
Group1: key1=value1, key2
Group2: value2
您可以使用以下方法提取這些鍵和值對
(\w[^,=]*)=(.*?)(?=]|,\s*\w[^,=]*=)
細節
(\\w[^,=]*)
-第1組:一個單詞char,后跟0+個除=
和之外的其他字符,
=
-一個=
字符 (.*?)
-第2組:除換行符以外的任何0+個字符,應盡可能少,直到出現的最左邊 (?=]|,\\s*\\w[^,=]*=)
-a ]
char或,
空格,單詞char然后=
之外的0+ char ,
然后a =
。 Java演示 :
String s = "[key1=value1, key2=value2, key 3= text,value # 3]";
Pattern pattern = Pattern.compile("(\\w[^,=]*)=(.*?)(?=]|,\\s*\\w[^,=]*=)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println("Key-value pair found:");
System.out.println(matcher.group(1).trim());
System.out.println(matcher.group(2).trim());
}
輸出:
Key-value pair found:
key1
value1
Key-value pair found:
key2
value2
Key-value pair found:
key 3
text,value # 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.