今天写了一道关于html标签匹配的问题,类似于括号匹配问题,以前这类题是用栈实现的,最近学习了正则表达式,发现用正则表达式解决这类问题简单有效~
附上我写的代码:
- package class2;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class G {
- public static void main(String[] args) {
- String s1 = "<div>kkk<a>ddd</a></div>";
- String s2 = "<div>kkk<a>ddd</div>";
- func(s1);
- func(s2);
- }
- public static void func(String s){
- Pattern pt = Pattern.compile("<([^<>]+)>[^<>]*</([^<>]+)>");
- Matcher mc = pt.matcher(s);
- boolean flag = true;
- while (mc.find()) {
- //System.out.println(mc.group());
- if (mc.group(1).equals(mc.group(2))) {
- s = mc.replaceFirst("");
- mc = pt.matcher(s);
- } else {
- flag = false;
- break;
- }
- }
- System.out.println(flag);
- }
- }
复制代码 结果如下:
但是像类似于<br>这样的标签(没有结束标签</br>)就无法正确判断,希望大家指点~
|