zoukankan      html  css  js  c++  java
  • Java的正则表达式

    package RegexTest;
    
    /**
     * Created by hu on 2016/3/29.
     */
    /*
    * Java的正则表达式
        在正则表达式中,用d表示一位数字,如果在其它语言中使用过正则表达式,
        就会发现Java对反斜线的不同处理。在其它语言中\表示"想要在正则表达式中
        插入一个普通的(字面上的)反斜线,请不要给它任何意义"。
        而在Java中\的意思是"想要插入一个正则表达式的反斜线,
        所以其后面的字符具有特殊的意义"。例如,想要表达一位数字,
        那么正则表达式应该为\d。如果想要插入一个普通的反斜线,则应该是\\。
        不过换行和制表符之类的东西只需要使用单反斜线:
    	
    * */
    public class IntegerMatch {
        public static void main(String[] args){
            /*
            *如果想要表达“一个或多个之前的字符”,应该使用"+"
            *“前面可能有一个负号”,使用"-?",故?的意思是可能有也可能没有
            * \d表示后面跟的是数字
            * */
            System.out.println("-1234".matches("-?\d+"));
            System.out.println("5678".matches("-?\d+"));
            System.out.println("+911".matches("-?\d+"));
            //因为"+"在正则表达式中有特殊的意义,所以将其转义
            System.out.println("+911".matches("(-|\+)?\d+"));
        }
    }
    

      

    package RegexTest;
    
    import java.util.Arrays;
    
    /**
     * Created by hu on 2016/3/29.
     */
    /*
    * String类自带了一个非常有用的正则表达式工具,split()方法,其功能是“将字符串从正则表达式匹配的地方切开”
    * */
    public class Splitting {
        public static String knights="Then, when you have found the shrubbery, you must "
                +"cut down the mightiest tree in the forest... "+"with ... a herring!";
        public static void split(String regex){
            System.out.println(Arrays.toString(knights.split(regex)));
        }
        public static void main(String[] args){
            //按照空格来划分字符串
            split(" ");
            //W的意思是非单词字符,w则表示一个单词字符
            split("\W+");
            //字母n后面跟着一个或多个非单词字符
            split("n\W+");
        }
    }
    

     

    package RegexTest;
    
    /**
     * Created by hu on 2016/3/29.
     */
    /*
    * String.split()还有一个重载的版本,它允许限制字符串分割的次数
    * String类自带的最后一个正则表达式工具是替换。你可以只替换正则表达式第一个匹配的子串,或是替换所有匹配的地方。
    * */
    public class Replacing {
        public static String knights="Then, when you have found the shrubbery, you must "
                +"cut down the mightiest tree in the forest... "+"with ... a herring!";
        public static void main(String[] args){
            //只替换第一个符合条件的子串,匹配以字母f开头,后跟多个字符
            System.out.println(knights.replaceFirst("f\w+","located"));
            //替换所有符合条件的子串
            System.out.println(knights.replaceAll("shrubbery|tree|herring","banana"));
        }
    }
    

      创建正则表达式:

         

    这只是常用的一部分

     

    package RegexTest;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * Created by hu on 2016/3/29.
     */
    /*
    * 比起功能有限的String类,本人更喜爱构造更能强大的正则表达式对象。只需要导入java.util.regex包,
    * 然后使用static Pattern.compile()方法来编译自己的正则表达式即可,它会根据String类型的正则表达式生成
    * 一个Pattern对象,接下来把想要匹配的字符串输入到Pattern对象的matcher()方法。matcher()方法会生成一个Matcher
    * 对象。
    * */
    public class TestRegularExpression {
        public void testRegularExpression(String regex,String matchStr){
            Pattern pattern=Pattern.compile(regex);
            Matcher matcher=pattern.matcher(matchStr);
            while (matcher.find()){
                System.out.println("Match ""+ matcher.group()+""at position "+ matcher.start()+"-"+ (matcher.end()-1));
            }
        }
    }
    

      

    package RegexTest;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * Created by hu on 2016/3/29.
     */
    public class Finding {
        public static void main(String[] args){
            Matcher m= Pattern.compile("\w+").matcher("Evening is full of the linnet's wings");
            while (m.find()){//find()像迭代器那样前向遍历输入的字符串
                System.out.print(m.group() + " ");
            }
            System.out.println();
            int i=0;
            while (m.find(i)){//该find能够接收一个整数作为参数,该整数表示字符串中字符的位置,并以其作为搜索的起点。
                System.out.print(m.group() + " ");
                i++;
            }
        }
    }
    

      其结果如下:

  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5333903.html
Copyright © 2011-2022 走看看