字符串,正则表达式<正则表达式**

 正则表达式基本概念:

正则表达式定义了字符串的模式,本质是一种特殊的字符串对象。

正则表达式可以用来搜索、编辑或处理文本。

正则表达式并不局限于某一种语言,但是在每种语言中有细微的差别。

JAVA程序使用证正则表达式:

字符串常用方法:

String 支持正则表达式方法:

.replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。

.replaceFirst()方法使用给定的参数 replacement 替换字符串第一个匹配给定的正则表达式的子字符串。

.split() 方法用于把一个字符串String分割成字符串数组String[]。

.matches()方法用于检测字符串是否匹配给定的正则表达式。

调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:

正则表达式基本语法规则:

"[\\u4e00-\u9fa5\s]+"匹配汉字和空格,最少一个 ,可以多个,没有上限;

\\d+和[0-9]{1,}是同一个表达式,用途一样。

实例应用练习:

//        判断一组字符中有没有xxx
        System.out.println("today11.1".contains("12"));
        System.out.println("today11.1".contains("11"));
//        判断一组字符是不是一位数字
        System.out.println("today11.1".matches("\\d"));
        System.out.println("today11.1".matches("[0-9]{1,}"));
//        判断一组字符中有没有一个数字   " . ” 代表任意一个字符,“ * ”代表{0,}
        System.out.println("today11.1".matches(".*\\d.*"));

正则表达式相关的类:

java.util.regex.Pattern类/ Matcher类

Matcher类的. matches() 方法是判断字符串和正则表达式是不是匹配,如果匹配就返回true,否 则返回false。

find() 方法,是Matcher类通过find()方法,返回布尔true 或 false,一般用于while循环语句,用 来遍历心有匹配的结果.

group()

 实例应用:

 使用分组演示功能:

 总结:

[a-zA-Z]代表一个字母。

[a-zA-Z]+此表达式和[a-zA-Z]{1,}一样,代表最少是一个字母,无上限。

[^a-zA-Z]^代表取反 非字母。

了解"[^a-zA-Z]+([a-zA-Z]{4,6})+[^a-zA-Z]+"正则表达式的使用

实例应用练习:

 从字符串,检索所有英文单词,并打印出来,要求全部小写,首字母大写:

判断一个字符串有没有字母: 

正则表达式规则:

实例应用:

 

 案例:项目会员注册,在注册时姓名(要么是全中文,要么是全英文,不是中文混合):

实例应用练习:

 

判断手机号是否是合法的手机号:

思路;(遍历判断)

 

 

 

使用正则表达式判断电话号码是否正确:(相对 简洁方便)

 

. 判断账号的规则(不能是数字开头,可以有字母 数字 还可以有下滑线,长度必须在6位-12 位):

 

正则表达式贪婪、禁用贪婪:

在正则表达式中,有些表达式有可选的范围,java正则表达式会在此选最大支持范围,这样模式贪 婪模式。 \\d{3} 没有贪婪模式 \\d+ 有范围{1,} 有贪婪,能选最多就默认选最大的。如果要禁用贪婪,应该在表达式的量词后加 一个 ? 号

实例应用: 

实例应用练习: 

1. 正则判断一个字符串是全中文

2. 正则判断一个字符串有没有中文汉字

 3. 正则实现在一个字符串,取所有数字,包括负数,并求和。

4. 求出123456789 不改变数字位置,随机放加减保证和为100,请写出这样的表达式?

正则表达式分组:

正则表达式分组,就是在表达式字符串中用 () 包括起来,就是一组,组是从1开始,如果没 有使用括号,就是0组。 groupCount() Matcher类的方法,用来返回有多少组,可能是0也可以是1

 分组作用:正则表达式分组,主要用来处理字符串某组(删除,检索,替换)

 

 

正则表达式实例应用:

//        正则表达式
        String str = "10月28Pm";
        if (str.matches(".*[\\u4e00-\\u9fa5]+.*")) {
            System.out.printf("%s:含有中文字符%n", str);
        }
        String str1 = "十月二十八日下午";
        if (str1.matches(".*[\\u4e00-\\u9fa5].*")) {
            System.out.printf("%s:全是中文字符%n", str1);
        }
        if (str.matches(".*[A-Z].*")) {
            System.out.printf("%s:含有大写字母%n", str);
        }

        if (str.matches(".*[a-z].*")) {
                System.out.printf("%s:含有小写字母%n", str);
            }
        if (str.matches(".*[0-9].*")) {
                System.out.printf("%s:含有数字%n", str);
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值