正则表达式(以Java为例)(基础版)

一、概念

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

简单点,说白话:正则表达式——正确的表达式。

二、作用

有啥用呢?

通常用来检测字符串是否符合某规则、根据某规则切分字符串或替换符合规则的文本 。

省流:用来检测其它文本的。

三、举例

以检验一串数字是否为QQ号码为例:

1、一串数字若为QQ需满足以下要求:

①为5~11位数字;

②第1位不能为0。

2、用if语句编写程序(主程序段):

String num = "369369369";

boolean flag = false;

if (num.length() >= 5 && num.length <= 11 && !num.startsWith("0")) {

    flag = true;

}

System.out.print(flag);

3、用正则表达式编写(主程序段);

String num = "369369369";

String regex = "[1-9][0-9]{4,14}";

boolean flag = num.matches(regex);

用到的方法名:

boolean matches(String regex)

描述:

当前字符串是否匹配给定的正则表达式

四、简单的几个常用方法

方法名描述
boolean matches(String regex)当前字符串是否匹配给定的正则表达式 
String replaceAll(String regex, String replacement)使用replacement替换当前字符串中所有符合正则表达式的内容 
String[] split(String regex)根据给定的正则表达式拆分当前字符串 

五、语法

正则表达式中,字符分为普通字符和元字符

普通字符:大小写字母,数字,下划线,部分特殊符号,非西文字符等

主要元字符:\   {}   *   ?   +    ()    []   -   |   ^   $

匹配规则:

合法字符

字符解释
X

字符X(X可代表任何合法的字符)

\0mnn

八进制数0mnn所代表的字符

\xhh十六进制数0xhh所代表的字符
\uhhhh十六进制数0xhhhh所表示的Unicode字符
\t制表符("\u0009")
\n新行(换行)符(‘\u000A’)
\r回车符(‘\u000D’)
\f 换页符(‘\u000C’)
\a报警(bell)符(‘\u0007’)
\eEscape 符(‘\u001B’)
\cxx 对应的的控制符。例如,\cM匹配 Ctrl-M。x 值必须为 A~Z 或 a~z 之一。

特殊字符

特殊字符说明
$匹配一行的结尾。要匹配 $ 字符本身,请使用\$
^匹配一行的开头。要匹配 ^ 字符本身,请使用\^
()标记子表达式的开始和结束位置。要匹配这些字符,请使用\(\)
[]用于确定中括号表达式的开始和结束位置。要匹配这些字符,请使用\[\]
{}用于标记前面子表达式的出现频度。要匹配这些字符,请使用\{\}
*指定前面子表达式可以出现零次或多次。要匹配 * 字符本身,请使用\*
+指定前面子表达式可以出现一次或多次。要匹配 + 字符本身,请使用\+
?指定前面子表达式可以出现零次或一次。要匹配 ?字符本身,请使用\?
.匹配除换行符\n之外的任何单字符。要匹配.字符本身,请使用\.
\用于转义下一个字符,或指定八进制、十六进制字符。如果需匹配\字符,请用\\
|指定两项之间任选一项。如果要匹配字符本身,请使用\|

 预定义字符

预定义字符说明
.可以匹配任何字符
\d匹配 0~9 的所有数字
\D匹配非数字
\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等
\S匹配所有的非空白字符
\w匹配所有的单词字符,包括 0~9 所有数字、26 个英文字母和下画线_
\W匹配所有的非单词字符

六、简单的练习

1、 

举例:校验手机号码 
1:要求为11位数字 
2:第1位为1,第2位为3~5,7~8中的一个,后面9位为0~9之间的任意数字。 
代码演示: 
 String phone = "18810022666"; 
 String regex = "1[34578][0-9]{9}"; 
 boolean flag = phone.matches(regex); 

2、

 举例:将字符串中的数字全部替换成"!" 
 String str = "1a2b3c4d"; 
 str = str.replaceAll("\\d", "!"); 
 System.out.println(str); 

3、

举例:根据空格切割字符串 
String str = "杭 师 大"; 
String[] arr = str.split(" "); 
for(int i=0;i<arr.length;i++){ 
 System.out.println(arr[i]); 

七、常用的类

等我学了类再说吧。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值