簡體   English   中英

正反模式的正則表達式模式

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

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