Java 正则表达式拆分括号组
如何在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
(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());
}
}