zoukankan      html  css  js  c++  java
  • 正则表达式 <A HREF>

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class RegexDemo {

        /**
         * @param args
         * @throws FileNotFoundException
         */
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            int count = 0;
            String fileName = "D:\\Users\\Administrator\\Desktop\\forRegex.txt";
            StringBuffer buffer = new StringBuffer(10240);
            FileReader fr = new FileReader(fileName);
            BufferedReader br = new BufferedReader(fr);
            while (br.ready()) {
                // System.out.println();
                buffer.append(br.readLine());
            }
            // 在HTML中取<a>到</a>
            // String regex =
    //"(<a\\s+([^>h]|h(?!ref\\s))*href[\\s+]?=[\\s+]?('|\"))([^(\\s+|'|\")]*)([^>]*>)(.*?)</a>";
            // 在<a></a>中取href
            // String
            // regex="(?<=[\\s+]?href[\\s+]?=[\\s+]?('|\")?)[^(\"|')>]+?(?=\"|')";
            // 在<a></a>中同时取href与名称,使用group(4)与group(1)
            // String regex="((?<=[\\s+]?href[\\s+]?=[\\s+]?('|\")?)[^\"|'>]+?(?=\"|'))(.+?)?((?<=>)(.+?)?(?=</a>))";
            // 在<a></a>中取包含'登录'的链接
            //String regex = "((?<=[\\s+]?href[\\s+]?=[\\s+]?('|\")?)[^\"|'>]+?(?=\"|'))(.+?)?((?<=>).*登录.*(?=</a>))";
            //在html中同时取href与名称,使用group(3)与 group(5)
            String regex="<a\\s+([^>h]|h(?!ref\\s))*(?<=[\\s+]?href[\\s+]?=[\\s+]?('|\")?)([^\"|'>]+?(?=\"|'))(.+?)?((?<=>)(.+?)?(?=</a>))";
            Pattern p = Pattern.compile(regex);

            Matcher m = p.matcher(buffer.toString());

            System.out.println("INPUT: " + buffer);
            System.out.println("REGEX: " + regex + "\r\n");
            while (m.find()) {

                System.out.println(m.group(3) + ":" + m.group(5));
                //System.out.println(m.group(0) );
                count++;
            }
            if (count == 0) {
                System.out.println("NO MATCHES: ");
            }
            System.out.println("TOTAL:" + count);
        }

    }

    //BUG还是有的,花了一晚上时间

  • 相关阅读:
    题解【JOI 2020/2021 二次予選】B
    求导公式
    题解【洛谷P6875】[COCI2013-2014#6] KRUŽNICE
    二项式反演小记
    Matrix-Tree 定理小记
    2020ICPC南京D. Degree of Spanning Tree
    Codeforces Round #712 (Div. 1) C. Travelling Salesman Problem
    2021湖南多校对抗赛第四场 I
    2021湖南多校对抗赛第二场 C
    2021湖南多校对抗赛第二场 B
  • 原文地址:https://www.cnblogs.com/yangyh/p/1719693.html
Copyright © 2011-2022 走看看