Java一个关于正则表达式的问题
代码如下:Stringstr=">(.*?)</";Stringstr1="<fontsize=2>1000119</font>";Patternpattern=Patt...
代码如下:
String str = ">(.*?)</";
String str1 = "<font size=2>1000119</font>";
Pattern pattern =Pattern.compile(str);
Matcher matcher =pattern.matcher(str1);
while(matcher.find()){
matcher.group(1);
}
该表达式能匹配到的,但是就是不能进入while循环,而且在while循环之前打印下matcher,find()发现是true但是到while循环中用debug查看,发现是false,在线等!! 展开
String str = ">(.*?)</";
String str1 = "<font size=2>1000119</font>";
Pattern pattern =Pattern.compile(str);
Matcher matcher =pattern.matcher(str1);
while(matcher.find()){
matcher.group(1);
}
该表达式能匹配到的,但是就是不能进入while循环,而且在while循环之前打印下matcher,find()发现是true但是到while循环中用debug查看,发现是false,在线等!! 展开
展开全部
正则一:"<a[^>]+>[.\\n]+</a>"
先用正则一取出每一个<a>标记字符串,组成一个数组。但要设置成全局的,在javascript中是g,在JAVA中我比较不熟。
正则二:"\shref=\"([^\"]+)\"[^>]+>([.\\n]+)</a>"
再通过循环用数组的每项对正则二进行匹配,得出的子匹配1是href值,子匹配2是<a>的内容。
比如(不好意思我JAVA不熟,所以以javascript为例,但是语法是差不多的):
var html="这里是html的源代码......";
var reg1 = new RegExp("<a[^>]+>[.\\n]+</a>", "gi");
var reg2 = new RegExp("\shref=\"([^\"]+)\"[^>]+>([.\\n]+)</a>", "i");
var arr = html.match(reg1);
var l = arr.length;
for(var i=0;i<l;i++)
{
var res = null;
if(res = arr[i].match(reg2))
{
res[1]//这里是href值
res[2]//这里是<a>内容值
}
}
先用正则一取出每一个<a>标记字符串,组成一个数组。但要设置成全局的,在javascript中是g,在JAVA中我比较不熟。
正则二:"\shref=\"([^\"]+)\"[^>]+>([.\\n]+)</a>"
再通过循环用数组的每项对正则二进行匹配,得出的子匹配1是href值,子匹配2是<a>的内容。
比如(不好意思我JAVA不熟,所以以javascript为例,但是语法是差不多的):
var html="这里是html的源代码......";
var reg1 = new RegExp("<a[^>]+>[.\\n]+</a>", "gi");
var reg2 = new RegExp("\shref=\"([^\"]+)\"[^>]+>([.\\n]+)</a>", "i");
var arr = html.match(reg1);
var l = arr.length;
for(var i=0;i<l;i++)
{
var res = null;
if(res = arr[i].match(reg2))
{
res[1]//这里是href值
res[2]//这里是<a>内容值
}
}
追问
不好意思 ..我对js不是很熟 你能否用我给的数据,在用我的正则匹配下是否能成功呢,或者给我一个正则匹配我给的那个数据1000119 ,如果我这没问题,能进while循环就行
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询