如何玩转正则

我在学习编程与实际编程的过程中,总是为正则这个编程中的概念感叹不已.假设,没有正则这个概念工具,就是验证一个简单的手机号码.我们也得把客户输入的字符,一个提取出来进行程序规则的验证。这增加了程序员的时间支出,如果再要匹配更复杂的模式,比如在英汉字典中找出最长的单词,工作量又大了好几倍.每感于此,我就觉得正则是一个十分强大的概念,自己特别想体会其中的妙用,但限于自己的编程生涯与认知层次,还未体验到其更高阶的乐趣.但是每次往前走一点,发现妙用或者有新的新的体会,做下记录与归纳,推演.相信一定会越来越懂它.希望与此文有一面之缘的人,可以留下有趣,或者有用的问题,激发大家使用正则来解决它. 我们写的程序本质上就是字符,而能有效的处理这些字符的工具将会促进我们的编程,而正则就是其中一个.
正则,最常见的是验证各种输入是否符合要求,比如邮件,手机号码,密码复杂度.这些网上一大把,实在已经被看腻了.
我记得大学时,学习线性代数接触过正则这个概念,无奈课本不在身边,无法复盘这个概念在数学中的作用,亦无法与计算机中的正则做比较,put it to todoList.

正则的主要功用就是 查找/替换.现将总结示例如下

1.在字典中查询最长的单词
2.将10/31/05转化为2015年10月31日

public static void main(String[] args) {

        String filePath = "E:\\《牛津高阶英汉词典》全集完整版TXT电子书\\牛津电子词典.txt";

        // 输出文件中匹配正则的字符
        String regualr="\\b\\w{15,}\\b";
        Pattern pattern = Pattern.compile(regualr);

        //printRegularText(pattern,filePath);

        // 正则反义使用
        regualr = "(\\d{2})/(\\d{2})/(\\d{2})";
        // 输入美国日期格式 将此替换为中国日期格式
        //repalceStrByregualr(regualr);
    }

    // 输出文件中匹配正则的字符
    private static void printRegularText(Pattern pattern,String filePath) {

        Scanner scanner = null;

        try {
            scanner = new Scanner(new File(filePath));
            while(scanner.hasNext()){
                String tempString = scanner.nextLine();
                Matcher m = pattern.matcher(tempString);
                while(m.find()){
                    System.out.println(m.group());
                }
            }
        } catch (FileNotFoundException e) {
            e.printstacktrace();
        } finally{
            if(scanner!=null){
                scanner.close();
            }
        }
    }
    // 美国日期格式替换为中国日期格式
    private static void repalceStrByregualr(String regualr){

        Scanner scanner = null;
        try{
            scanner = new Scanner(System.in);
            while(scanner.hasNext()){
                String tempLine = scanner.nextLine();
                System.out.println(tempLine.replaceAll(regualr,"20$3-$1-$2"));
            }
        } catch (Exception e) {
            // Todo: handle exception

        } finally{
            if(scanner!=null){
                scanner.close();
            }
        }

    }

促使本人写此文章的冲动,有一部分是因为看了伯乐在线的一篇博客55分钟学会正则表达式

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...