java 正则例子

1.不易开头、结尾;小数;圆角字符

包含数字、字母、圆角字符

不以<br/>开头、结尾,但中间可以存在

小数中的小数点是半角

正则表达式

"^(?!<br/>)(([0-9]+(.[0-9]+)?)|(<br/>)|[a-zA-Z\\u0391-\\uffe5])*(?<!<br/>)$"

解析

字母:[a-Z]

圆角字符:[\\u0391-\\uffe5]

数字:(包含小数):[0-9]+(.[0-9]+)?          这里的?表示有无量词

多个元素并列用| 隔离开

每个单独的元素用()括起来

不以<br/>开头:^(?!<br/>)

不以<br/>结尾:(?<!<br/>)$

测试

 @Test
    public void test2() {
        String str = "ABCabc中国";
        String regEx = "^(?!<br/>)(([0-9]+(.[0-9]+)?)|(<br/>)|[a-zA-Z\u0391-\uffe5])*(?<!<br/>)$";
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(str);
        boolean rs = matcher.matches();
        System.out.println(rs);

    }

true

2.group()

需求:找出连续的大写字母

  @Test
    public void test() {
        String str = "MABabAcdBCef";
        String regEx = "([A-Z]+)";
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
   }

输出:

MAB
A
BC

3.如果去掉正则中的()

    @Test
    public void test() {
        String str = "MABabAcdBCef";
        String regEx = "[A-Z]+";
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

结果

java.lang.IndexOutOfBoundsException: No group 1

    at java.util.regex.Matcher.group(Matcher.java:538)

正则表达式中以’()’标记的子表达式所匹配的内容就是一个分组(group).

 

posted @ 2018-09-11 21:48  jihite  阅读(342)  评论(0编辑  收藏  举报