如何玩转正则

前端之家收集整理的这篇文章主要介绍了如何玩转正则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

猜你在找的正则表达式相关文章