有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于处理{Item1}的正则表达式代码。将项2放入数组或列表中

谁能给我一些关于如何使用Java正则表达式处理以下内容的建议:

{Item1}。项目2

所以我得到一个数组或列表,包含

  • 项目1
  • 项目2

我在想一个正则表达式,比如:

   Pattern p = Pattern.compile("\\{(.+?)\\}\\.(.*?)");     
   Matcher match = p.matcher(mnemonicExpression); 
   while(match.find()) {     
    System.out.println(match.group());    
   }   

但这似乎不起作用

任何帮助都将不胜感激

问候

jcstock74


共 (2) 个答案

  1. # 1 楼答案

    你需要抓住单独的比赛组1和2。通过使用group(),您实际上是在进行group(0),这是整个匹配。另外,最后一个.*?不应该不情愿,否则,它只匹配一个空字符串

    试试这个:

    Pattern p = Pattern.compile("^\\{(.+?)\\}\\.(.*)$");
    //                                \ /        \/
    //                                 1          2
    
    Matcher match = p.matcher("{Item1}.Item2");
    while(match.find()) {
      System.out.println("1 = " + match.group(1));
      System.out.println("2 = " + match.group(2));
    }
    

    它产生:

    1 = Item1
    2 = Item2
    
  2. # 2 楼答案

    额外的回答:这个网页有一个非常好的使用java的正则表达式测试程序。util。正则表达式。这是测试表达式的最佳方法,它甚至提供了在Pattern.compile()中使用的转义java字符串:

    http://www.regexplanet.com/simple/index.html