如何正则匹配取出中括号里面的内容(%[GD1108010110000](()*[GD1108010111100]*+- 请教各位大侠:如何匹配下面中括号里面的内容:(%[GD1108010110000](()*[GD1108010111100]*+-我想取出中括号里面的内容,即取出GD1108010110000和GD1108010111100 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String value="(%[GD1108010110000](()*[GD1108010111100]*+-";Pattern p = Pattern.compile("[0-9A-Z]+");Matcher m = p.matcher(value);while(m.find()){ System.out.println(m.group());} 正则出数字和字母嘛...-.- String[] sa =str.split("[");然后再subString(0,sa[i].indexof("]")) public static void main(String[] args) { String str = "(%[GD1108010110000](()*[GD1108010111100]*+-"; Matcher m = Pattern.compile("\\[(.*?)\\]").matcher(str); while (m.find()) { System.out.println(m.group(1)); } } 把正则条件换成 "\\[{1}[^\\]\t\n\r\f]+\\]{1}" 肿么样...=-= String content = "[GD1108010110000][GD1108010111100]";String pattern = "\\[(GD1108010110000)\\]\\[(GD1108010111100)\\]";Matcher matcher = Pattern.compile(pattern).matcher(content);if (matcher.find()) {System.out.println(matcher.group(1));System.out.println(matcher.group(2));}不知道是不是这意思,你那(%[GD1108010110000](()*[GD1108010111100]*+-是目标字符序列还是正则表达式?因为目标字符序列中的括号什么的都要转译,写完看起来比较乱,给你化简了一下,中括号留下了,在正则表达式里转译了中括号。 这种方式是可以,但效率上会不会比正则表达式低呢?String[] sa =str.split("\\["); for (int i=1;i<sa.length;i++) { System.out.println(sa[i].substring(0,sa[i].indexOf("]"))); } 用5L的就可以了,正则表达式,取[]里面的内容,即regex = "\\[(.*?)\\]"; 我的意思就是"任意字符串加[要取出的任意字符串加]任意字符串加[要取出的任意字符串加]任意字符串加......",如1Aa&意[d@g1串]取+——99(df12[字d#fn32f]dfa%~78,我要取出“d@g1串”和“df12[字d#fn32f” String str = "(%[GD1108010110000](()*[GD1108010111100]*+-"; Pattern pattern = Pattern.compile("GD\\d{1,}"); Matcher metcher = pattern.matcher(str); while(metcher.find()){ System.out.println(metcher.group()); } 郁闷,这个做法可以解决,但取出的内容包含了中括号,即“[GD1108010111100]”,我是想只要GD1108010111100 String content = "(%[GD1108010110000](()*[GD1108010111100]*+-";String pattern = "\\[(.*)\\]\\[(.*)\\]";Matcher matcher = Pattern.compile(pattern).matcher(content);if (matcher.find()) {System.out.println(matcher.group(1));System.out.println(matcher.group(2));}试试吧,之前告诉你了,你没理解 String content = "(%[GD1108010110000](()*[GD1108010111100]*+-";String pattern = "\\(%\\[(.*)\\]\\(\\(\\)\\*\\[(.*)\\]\\*\\+-";Matcher matcher = Pattern.compile(pattern).matcher(content);if (matcher.find()) { System.out.println(matcher.group(1)); System.out.println(matcher.group(2));} 运行这个吧,转译转的我头都大了 定这个 学习到了group()后面可以加组 main方法的问题 如何解决java多线程问题 自动调用二级画面上的button,打开三级画面,二级画面不关,怎么实现 如何在swt desiger中实现button的清空与登录功能 帮忙看个程序~~ 回复"一著名软件公司的java笔试算法题"有兴趣请进 如何通过AOP得到切点方法的返回值,中间变量? 关于SOCKET的问题。。。。 在Jbuilder中怎么给应用程序打包? 如何将ResultSet分页展示:比如说十条一页,有“上一页”和“下一页”的按钮。 菜鸟跪求帮助 有关于sql server 2005的,路过的帮看看这个装的全不全
Pattern p = Pattern.compile("[0-9A-Z]+");
Matcher m = p.matcher(value);
while(m.find()){
System.out.println(m.group());
}
正则出数字和字母嘛...-.-
然后再subString(0,sa[i].indexof("]"))
public static void main(String[] args) {
String str = "(%[GD1108010110000](()*[GD1108010111100]*+-";
Matcher m = Pattern.compile("\\[(.*?)\\]").matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
}
String content = "[GD1108010110000][GD1108010111100]";
String pattern = "\\[(GD1108010110000)\\]\\[(GD1108010111100)\\]";
Matcher matcher = Pattern.compile(pattern).matcher(content);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}不知道是不是这意思,你那(%[GD1108010110000](()*[GD1108010111100]*+-是目标字符序列还是正则表达式?因为目标字符序列中的括号什么的都要转译,写完看起来比较乱,给你化简了一下,中括号留下了,在正则表达式里转译了中括号。
这种方式是可以,但效率上会不会比正则表达式低呢?
String[] sa =str.split("\\[");
for (int i=1;i<sa.length;i++) {
System.out.println(sa[i].substring(0,sa[i].indexOf("]")));
}
regex = "\\[(.*?)\\]";
我的意思就是"任意字符串加[要取出的任意字符串加]任意字符串加[要取出的任意字符串加]任意字符串加......",如1Aa&意[d@g1串]取+——99(df12[字d#fn32f]dfa%~78,我要取出“d@g1串”和“df12[字d#fn32f”
String str = "(%[GD1108010110000](()*[GD1108010111100]*+-";
Pattern pattern = Pattern.compile("GD\\d{1,}");
Matcher metcher = pattern.matcher(str);
while(metcher.find()){
System.out.println(metcher.group());
}
郁闷,这个做法可以解决,但取出的内容包含了中括号,即“[GD1108010111100]”,我是想只要GD1108010111100
String content = "(%[GD1108010110000](()*[GD1108010111100]*+-";
String pattern = "\\[(.*)\\]\\[(.*)\\]";
Matcher matcher = Pattern.compile(pattern).matcher(content);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}试试吧,之前告诉你了,你没理解
String content = "(%[GD1108010110000](()*[GD1108010111100]*+-";
String pattern = "\\(%\\[(.*)\\]\\(\\(\\)\\*\\[(.*)\\]\\*\\+-";
Matcher matcher = Pattern.compile(pattern).matcher(content);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
} 运行这个吧,转译转的我头都大了