簡體   English   中英

Java 正則表達式用於匹配花括號和大括號內的括號

[英]Java regex for matching curly braces and brackets within braces

我有以下字符串 - There are {num} scores {/game/[game_name]/game_in} 我想從字符串中提取numgame_name 我有以下模式 - "\\{([^}]+)}"從字符串中提取num 我怎樣才能擴展它來提取game_name呢?

在 Java 中,您可以使用此正則表達式和代碼:

String s = "{num} scores {/game/[game_name]/game_in}";
Pattern p = Pattern.compile(
                 "\\{([^]\\[\\{\\}]+)\\}.*?\\[([^]\\[\\{\\}]+)]");

List<String> res = p.matcher(s)
   .results()
   .flatMap(mr -> IntStream.rangeClosed(1, mr.groupCount())
   .mapToObj(mr::group))
   .collect(Collectors.toList());
//=> [num, game_name]

正則表達式演示

正則表達式詳細信息:

  • \{ : 匹配{
  • ([^]\[{}]+) :捕獲組 #1 以捕獲不是{, }, [, ]的任何字符的 1+
  • } : 匹配}
  • .*? :匹配任何文本(惰性)
  • \[ : 匹配[
  • ([^]\[{}]+) :捕獲組 #2 以捕獲 1+ 的任何不是{, }, [, ]的字符
  • ] : 匹配]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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