一个string,包含了下面的格式:
<object 任意 </object>
几次?
如 :<object test </object>
返回:1
如 :<object<aaaafd:>df:<><>dfad:<></object> <object testabcdef </object>
返回:2
<object 任意 </object>
几次?
如 :<object test </object>
返回:1
如 :<object<aaaafd:>df:<><>dfad:<></object> <object testabcdef </object>
返回:2
* 代表0 或者多个
<object <aaaafd:>df: <> <>dfad: <> </object> <object testabcdef </object>第一次匹配后:
$` = "";
$& = "<object <aaaafd:>df: <> <>dfad: <> </object>"
$' = " <object testabcdef </object>"接着再对$'进行匹配就好了。我想JAVA中应该有类似的东西吧。
// TODO Auto-generated method stub
String str = "<object <aaaafd:>df: <> <>dfad: <> </object> <object testabcdef </object>";
/*Pattern p = Pattern
.compile("<object([^<]|"+
"[^<][^/]|"+
"[^<][^/][^o]|"+
"[^<][^/][^o][^b]|"+
"[^<][^/][^o][^b][^j]|"+
"[^<][^/][^o][^b][^j][^e]|"+
"[^<][^/][^o][^b][^j][^e][^c]|"
+"[^<][^/][^o][^b][^j][^e][^c][^t]|"+
"[^<][^/][^o][^b][^j][^e][^c][^t][^>])*</object>");*/
String vStr = "</object>";
StringBuilder sb = new StringBuilder();
for(int i=0;i<vStr.length();i++){
if(sb.length()>0){
sb.append("|");
}
for(int j=0;j<i;j++){
sb.append("[^"+vStr.charAt(j)+"]");
}
}
String regex = "<object("+sb.toString()+")*</object";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
}
Pattern p = Pattern.compile("\\<object .*?\\</object\\>");
Matcher m = p
.matcher("<object <aaaafd:>df: <> <>dfad: <> </object> <object testabcdef </object>");
int count = 0;
while(m.find()){
count ++;
}
System.out.println(count);
public class Test95 {
public static void main(String[] args) {
String input = " <object <aaaafd:>df: <> <>dfad: <> </object> <object testabcdef </object>";
String regex = "<object(.*?)</object>";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
int i=0;
while(m.find()){
System.out.println(m.group(1));
i++;
}
System.out.println(i);
}
}
<object 任意 .swf或.wmv </object>
几次?
如 : <object test .swf </object> <object test .wmv</object> 返回:2
如 :<div><object codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=8,0,22,0" height="544" width="680" classid="clsid:D27CDB6E-AE6D-
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Movie" />
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Src" /> 返回:1
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Movie" />
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Src" /> 返回:1
----------------------------------------
没有结束</object>你也要返回1吗
String[] strs=rs.split(":::");
int length=strs.length;
import java.util.regex.Pattern;public class TagCountRegex { public static void main(String[] args) {
String input =
"<div> <OBJECT ><Param name=\"\" value=\"test.swf\"> </object><br />\r\n" +
"<OBJECT ><Param name=\"\" value=\"test.WMV\"></object> demo chars </div>\r\n" +
"<OBJECT width=\"69\"><Param name=\"\" value=\"test.swf\"></object>";
Pattern p = Pattern.compile("(?is)<object[^<>]*?>.*?(?:value=\"[^\"]+?\\.(?:swf|wmv)\")+?.*?</object>");
Matcher m = p.matcher(input);
int count = 0;
while (m.find()) {
count++;
}
System.out.println("Count: " + count);
}}
因为有点变化啊。.................一个string,包含了下面的格式:
<object 任意 .swf或.wmv </object>
几次?
如 : <object test .swf </object> <object test .wmv </object> 返回:2
如 : <div> <object codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=8,0,22,0" height="544" width="680" classid="clsid:D27CDB6E-AE6D-
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Movie" />
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Src" />
</object>返回:1只是匹配<object 任意 .swf或.wmv </object>
这种格式啊!
几次?
如 : <object test .swf </object> <object test .wmv </object> 返回:2
如 : <div> <object codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=8,0,22,0" height="544" width="680" classid="clsid:D27CDB6E-AE6D-
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Movie" />
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Src" />
</object> 返回:1 可能我没说清楚啊....上面星星的正则匹配了value
Pattern p = Pattern.compile("(?is)<object[^<>]*?>.*?(?:value=\"[^\"]+?\\.(?:swf|wmv)\")+?.*?</object>");我给<object test .swf </object> <object test .wmv </object> 字符串
返回结果不是2.需求格式如下:<object 任意 .swf或.wmv </object> 目的是得到字符串中该格式出现过几次!
如 : <object test .swf </object> <object test .wmv </object>
返回:2
如 : <div> <object codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=8,0,22,0" height="544" width="680" classid="clsid:D27CDB6E-AE6D-
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Movie" />
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Src" />
</object>
可能我没说清楚啊....上面星星的正则匹配了value
Pattern p = Pattern.compile("(?is)<object[^<>]*?>.*?(?:value=\"[^\"]+?\\.(?:swf|wmv)\")+?.*?</object>");我给<object test .swf </object> <object test .wmv </object> 字符串
返回结果不是2.需求格式如下:<object 任意 .swf或.wmv </object> 目的是得到字符串中该格式出现过几次!
如 : <object test .swf </object> <object test .wmv </object>
返回:2
如 : <div> <object codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=8,0,22,0" height="544" width="680" classid="clsid:D27CDB6E-AE6D-
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Movie" />
<param value="http://xyx.duowan.com/ufile/F/shihun5.swf" name="Src" />
</object>
Integer count = str.replaceFirst(
"^<object", "").replaceFirst(
"</object>$", "</object>miao").split(
".*[\\.swf[\\.wmv]].*</object>.*<object").length;用,就要用最逆天的办法喵~```