Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式拆分括号组_Java_Regex - Fatal编程技术网

Java 正则表达式拆分括号组

Java 正则表达式拆分括号组,java,regex,Java,Regex,如何在Java中拆分以下内容: (1,2),(3,4),(5,6) 进入: 我试过: test.split("(?<=\\()(.*)(?=\\))"); test.split(“(?您必须在一行中完成所有操作吗?非常简单,可以将其分解为多个部分,例如: public static void main(String[] args) { String test = "(1,2),(3,4),(5,6)"; String[] firstSplit = test.split

如何在Java中拆分以下内容:

(1,2),(3,4),(5,6)
进入:

我试过:

test.split("(?<=\\()(.*)(?=\\))");

test.split(“(?您必须在一行中完成所有操作吗?非常简单,可以将其分解为多个部分,例如:

public static void main(String[] args) {
    String test = "(1,2),(3,4),(5,6)";

    String[] firstSplit = test.split("\\),\\(");

    for (String token : firstSplit) {
        token = token.replaceAll("[\\(\\)]*", "");
        System.out.println(token);
    }
}

如果要拆分,应该在
)、(
(然后手动删除空值,除非我不知道有什么原因)

test.split("\\),\\(|\\)|\\(");
虽然…匹配可能更简单

"\\(([^\\)]*)\\)"

Hmmm…我认为如果只使用匹配(而不是
split()
调用),这个正则表达式就可以工作了:

所以在Java中,我认为这将是

Pattern p = Pattern.compile("\\([^\\)]+\\)");
Matcher m = p.matcher("(1,2),(3,4),(5,6)");

while(m.find()) {
    java.lang.System.out.println(m.group());
}

在使用Boost正则表达式引擎的TextPad中,它捕获数字

(\b\d+,\d+\b)
这就抓住了中间人:

((?:\),\()|(?:(?<!,)\()|(?:\)(?!,)))
输出:

[C:\javastuff\]java NumCommaNumSplitXmpl
Capture numbers:
1,2
3,4
5,6
Capture betweens:
(
),(
),(
)

这是一个有趣的问题。

public class main测试{

public static void main(String[] args){
    String msg = "(1,2),(3,4),(5,6)";
    String fmt = "(\\(|\\)\\,\\()|(\\(|\\))";

    String tokens[] = msg.split(fmt);
    for(String token: tokens) {
        System.out.println(token);
    }

    Pattern p = Pattern.compile("[0-9]+,[0-9]+");
    Matcher m = p.matcher("(1,2),(3,4),(5,6)");

    while(m.find()) {
        java.lang.System.out.println(m.group());
    }

}
}

次要说明:(1)您没有在正则表达式中创建任何组,因此您可能想使用
group()
而不是
group(1)
(2)在Java中
\
字符串的元字符,因此如果您想创建
\
文本,您需要通过将其写为
“\\\\”
来对其进行转义。
(                   #Capture one of these three (quoted) things:
   (?:              
      \),\(         #    "),("      <--Must be the first option!
   )
|
   (?:
      (?<!,)\(      #    [not-a-comma]"("
   )
|
   (?:
      \)(?!,)       #    ")"[not-a-comma]
   )
)
   import  java.util.regex.Pattern;
   import  java.util.regex.Matcher;

/**
   <P><CODE>java NumCommaNumSplitXmpl</CODE></P>
 **/
public class NumCommaNumSplitXmpl  {
   public static final void main(String[] igno_red)  {
      String sToSearch = "(1,2),(3,4),(5,6)";

      System.out.println("Capture numbers:");
         String sFindNumCommaNum = "(\\b\\d+,\\d+\\b)";

         Matcher m = Pattern.compile(sFindNumCommaNum).matcher(sToSearch);
         while(m.find())  {
            System.out.println(m.group());
         }

      System.out.println("Capture betweens:");
         String sFindBetweens = "((?:\\),\\()|(?:(?<!,)\\()|(?:\\)(?!,)))";

         m = Pattern.compile(sFindBetweens).matcher(sToSearch);
         while(m.find())  {
            System.out.println(m.group());
         }
   }
}
[C:\javastuff\]java NumCommaNumSplitXmpl
Capture numbers:
1,2
3,4
5,6
Capture betweens:
(
),(
),(
)
public static void main(String[] args){
    String msg = "(1,2),(3,4),(5,6)";
    String fmt = "(\\(|\\)\\,\\()|(\\(|\\))";

    String tokens[] = msg.split(fmt);
    for(String token: tokens) {
        System.out.println(token);
    }

    Pattern p = Pattern.compile("[0-9]+,[0-9]+");
    Matcher m = p.matcher("(1,2),(3,4),(5,6)");

    while(m.find()) {
        java.lang.System.out.println(m.group());
    }

}