public static List<String> getString(String str,String star, String end){
Pattern pattern = Pattern.compile("(?<="+star+")(\\S+?)(?="+end+")");
Matcher matcher = pattern.matcher(str);
List<String> data = new ArrayList<String>();
while(matcher.find())
data.add(matcher.group());
return data;
}
public static List<String> getString(String str,String pre,String star, String end){
Pattern pattern = Pattern.compile("(?<="+star+")"+pre+"(?="+end+")");
Matcher matcher = pattern.matcher(str);
List<String> data = new ArrayList<String>();
while(matcher.find())
data.add(matcher.group());
return data;
}
public static void main(String[] args) {
String str = "<li>111111111zui2jun1111;"
+ "222222222</li>333<li>4444"
+ " 555555</li>666"
+ "777<li>8888"
+ " 9999"
+ "000</li>";
System.out.println(getString(str,"([\\s\\S]*)","<li>","</li>"));
String str2 = "<li>111</li><li>222</li><li>333</li>";
System.out.println(getString(str2,"<li>","</li>"));
}
结果:
[111111111zui2jun1111;222222222</li>333<li>4444 555555</li>666777<li>8888 9999000]
[111, 222, 333]
为什么第一个不能像第二个一样 把每个符合<li>开头</li>结尾的字符串给截取出来呢
我如果要达到第二个的效果 要怎么写正则表达式呢
Pattern pattern = Pattern.compile("(?<="+star+")(\\S+?)(?="+end+")");
Matcher matcher = pattern.matcher(str);
List<String> data = new ArrayList<String>();
while(matcher.find())
data.add(matcher.group());
return data;
}
public static List<String> getString(String str,String pre,String star, String end){
Pattern pattern = Pattern.compile("(?<="+star+")"+pre+"(?="+end+")");
Matcher matcher = pattern.matcher(str);
List<String> data = new ArrayList<String>();
while(matcher.find())
data.add(matcher.group());
return data;
}
public static void main(String[] args) {
String str = "<li>111111111zui2jun1111;"
+ "222222222</li>333<li>4444"
+ " 555555</li>666"
+ "777<li>8888"
+ " 9999"
+ "000</li>";
System.out.println(getString(str,"([\\s\\S]*)","<li>","</li>"));
String str2 = "<li>111</li><li>222</li><li>333</li>";
System.out.println(getString(str2,"<li>","</li>"));
}
结果:
[111111111zui2jun1111;222222222</li>333<li>4444 555555</li>666777<li>8888 9999000]
[111, 222, 333]
为什么第一个不能像第二个一样 把每个符合<li>开头</li>结尾的字符串给截取出来呢
我如果要达到第二个的效果 要怎么写正则表达式呢