62,614
社区成员
发帖
与我相关
我的任务
分享
package Test;
import java.util.regex.*;
public class qdb
{
private int count=0;
public void f(String input)
{
String regex1="<[^/<].*?>\\s*";//用于匹配任何属性<a> <div> <p>等
Pattern p1=Pattern.compile(regex1);
Matcher m1=p1.matcher(input);
while(m1.find())
{
count++;//查找前端属性总个数.
}
for(int i=1;i<=count;i++)//根据count来循环输出属性
{
String regex2="(<[^/<]*?>){"+i+"}([^<>]*)(</.*?>){1,"+i+"}";
Pattern p2=Pattern.compile(regex2);
Matcher m2=p2.matcher(input);
while(m2.find())
{
System.out.println(m2.group());
}
}
}
public static void main(String[] argus)
{
String input="<li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>";
qdb q=new qdb();
q.f(input);
System.out.println("--------");
String input1="<br><li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>";
q.f(input1);
System.out.println("--------");
String input2="<p><br><li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>";
q.f(input2);
}
}
[/java]
下面为几次test的输出
[code=Java]
<li id='li-3'>aaaa</li>
<li id='li-2'><li id='li-3'>aaaa</li></li>
<li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>
--------
<li id='li-3'>aaaa</li>
<li id='li-2'><li id='li-3'>aaaa</li></li>
<li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>
<br><li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>
--------
<li id='li-3'>aaaa</li>
<li id='li-2'><li id='li-3'>aaaa</li></li>
<li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>
<br><li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>
<p><br><li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>
* <li id='li-1'>
<li id='li-2'> <li id='li-3'>aaaa </li>
</li> </li>
* <li id='li-2'> <li id='li-3'>aaaa </li>
</li>
* <li id='li-3'>aaaa </li>
package Test;
import java.util.regex.*;
public class qdb
{
private int count=0;
public void f(String input)
{
String regex1="<[^/<].*?>\\s*";
Pattern p1=Pattern.compile(regex1);
Matcher m1=p1.matcher(input);
while(m1.find())
{
count++;
}
for(int i=0;i<=count;i++)
{
String regex2="(<[^/<]*?>){"+i+"}(aaaa)(</.*?>){"+i+"}";
Pattern p2=Pattern.compile(regex2);
Matcher m2=p2.matcher(input);
while(m2.find())
{
System.out.println(m2.group());
}
}
}
public static void main(String[] argus)
{
String input="<li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>";
String regex="(<[^/].*?>\\s*)";
qdb q=new qdb();
q.f(input);
}
}
import java.util.List;
import java.util.LinkedList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class OnionRegex {
public static final Pattern P = Pattern.compile("(?is)\\s*<([a-z0-9-]+)(?:\\s+[^<>]*)?>(.*)</\\1>\\s*");
public static void onionFind(String s, List<String> result) {
if (s == null || result == null) throw new NullPointerException();
Matcher m = null;
if ((m = P.matcher(s)).matches()) {
result.add(s.trim());
onionFind(m.group(2), result);
}
}
public static void main(String[] args) {
String t = "<li id='li-1'>\n <li id='li-2'>\t <li id='li-3'>aaaa </li>\t\n </li> </li>";
List<String> r = new LinkedList<String>();
onionFind(t, r);
for (String s : r) {
System.out.println("* " + s);
}
}
}
public class TestA {
public static void find(String s) {
Pattern p = Pattern.compile("(<li .+?>(.*)</li>)");
Matcher matcher = p.matcher(s);
if (matcher.find()) {
System.out.println(matcher.group(0));
find(matcher.group(2));
}
}
public static void main(String[] args) {
String test = "<li id='li-1'> <li id='li-2'> <li id='li-3'>aaaa </li> </li> </li>";
find(test);
}
}
package Test;
import java.util.regex.*;
public class qdb
{
public static void f(String input,String regex)
{
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(input);
while(m.find())
{
for(int i=1;i<=m.groupCount();i++)
{
System.out.println(m.group(i));
}
}
}
public static void main(String[] args)
{
String input="<li id='li-1'><li id='li-2'><li id='li-3'>aaaa</li></li></li>";
String regex="(<li id='li-1'>(<li id='li-2'>(<li id='li-3'>aaaa</li>)</li>)</li>)";
f(input,regex);
}
}