怎么用正则来得到匹配的内容

怎么用正则来得到匹配的内容

问题描述:

比如我要匹配: #&数字&# 这种形式,如:#&123&# #&344&#
我知道正则的写法,现在我不光要知道是否有匹配的,我还有把匹配的内容拿出来分析,因为中间的数字是有含义的,我要得到他。
好像没有方法能得到正则匹配的内容啊。倒是有替换的功能。
splite方法能够根据正则分离成数组,但是他把我匹配的内容剔除了!!

求教,我怎么才能拿到我要匹配的内容啊!!!!

就这么简单:

[code="java"]
public class Test {
public static void main(String[] args) {
//(\d+)为分组
String regex = "#&(\d+)&#";
String str1 = "#&123&# #&344&# ";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str1);
while(m.find()) {
System.out.println(">>>>>"+m.group(1));
}
}
}
[/code]

正则表达式30分钟入门教程
[url]http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm[/url]

有个match方法。
function MatchDemo(){
var r, re; // 声明变量。
var s = "The rain in Spain falls mainly in the plain";
re = /ain/ig; // 创建正则表达式模式。
r = s.match(re); // 尝试去匹配搜索字符串。
return(r); // 返回的数组包含了所有 "ain"
// 出现的四个匹配。
}

[code="java"]
Pattern pattern=Pattern.compile("(#&)([1-9]{0,})(&#)");
Matcher matcher=pattern.matcher(str);
List list=new ArrayList();//保存配置到得集合
while(matcher.find()){
str= str.replaceAll("#&"+matcher.group(2)+"&#","");
list.add(matcher.group(2));
matcher=pattern.matcher(str);
}

[/code]

修改一下代码,str.replaceFirst("#&"+matcher.group(2)+"&#","");

[code="java"]
Pattern pattern=Pattern.compile("(#&)([1-9]{0,})(&#)");
Matcher matcher=pattern.matcher(str);
List list=new ArrayList();//用于保存匹配到得集合
while(matcher.find()){
str= str.replaceFirst("#&"+matcher.group(2)+"&#","");
list.add(matcher.group(2));
matcher=pattern.matcher(str);
}

[/code]

JavaScript写法如下:
[code="java"]

var re = new RegExp("(#&)([1-9]{0,})(&#)","ig");

while(re.test(str)){
str=str.replace("#&"+RegExp.$2+"&#","");
//RegExp.$2就是匹配到得值,保存到数组就可以了
re = new RegExp("(#&)([1-9]{0,})(&#)","ig");
}
[/code]

可能得到匹配的内容啊
你分组嘛,正则表达式的分组概念