黑马程序员--- 正则表达式
来源:互联网 发布:原生js实现分页效果 编辑:程序博客网 时间:2024/06/04 18:54
------- android培训、java培训、期待与您交流! ----------
1什么是正则表达式
正则表达式就是具有一定规则的字符串,正则表达式是用操作字符串的。
正则表达式的规则:
如:
[123],表示某一位必须是123.
[a-zA-Z]表示某一位必须是A—Z的大小写字母。
[a-m[q-z]]表示某一位必须是a-m或q-z小写字母。
[a-z&&[^def]]表示某一位必须是a-z除了def.的小写字母。
[a-z&&[^l-q]]表示某一位必须是a-z除了l-q的小写字母。
[^012]表示某一位不能是012数字。
[a-z&&[def]]表示某一位只能是def小写字母。
预定义字符
\d表示0-9数字。
\D表示[^0-9]
\w表示[a-zA-Z_0-9]
\W表示不能是大小写字母,数字和下划线:[^\w]。
\s表示空白字符
\S表示不能是空白字符:[^\s]
.表示任意字符。
注意:在使用下面有反斜线的表达式时,,因为反斜线属于转义字符,必须要再加上一个反斜线对其进行转意。如:
“\\d”.
边界匹配器
^
行的开头
$
行的结尾
\b
单词边界
\B
非单词边界
\A
输入的开头
\G
上一个匹配的结尾
\Z
输入的结尾,仅用于最后的结束符(如果有的话)
\z
输入的结尾
Greedy 数量词
X?
X,一次或一次也没有
X*
X,零次或多次
X+
X,一次或多次
X{n}
X,恰好 n 次
X{n,}
X,至少 n 次
X{n,m}
X,至少 n 次,但是不超过 m 次
正则表达式是用来操作字符串的,可以进行以下几种操作:匹配、切割、替换、获取。
1, 匹配
调用String类的matches(String regex);方法,用字符串和指定的正则进行匹配。返回值为boolean,为true表示字符串和正则表达式相匹配,否则不匹配。
如:
定义匹配手机号的正则表达式:要求,第一位不能是0,第二位只能是3,4,5,8。
public class RegexDemo { public static void main(String[] args) { String regex="1[3458]\\d{9}"; String str="13834530020"; System.out.println(str.matches(regex));//true }}
匹配用户名:要求,不能以数字开头,必须是5-15位。
public class RegexDemo { public static void main(String[] args) { String regex="[^\\d][\\w]{4,14}"; String str="michlejackson"; String str1="00abcdef"; System.out.println(str.matches(regex));//true System.out.println(str1.matches(regex)); //false }}
2, 切割
调用String类中的String[] split(String regex);方法对字符按指定的正则表达式进行切割,返回一个字符串数组。
如:
public class RegexDemo { public static void main(String[] args) {//将包含不固定数量空格的姓名字符串,将空格去除。 String str="zhangsan lisi wangcai"; String regex=" +";//表示空格数出现一次或多次。 String [] arr=str.split(regex); for(String s:arr){ System.out.println(s); } }}/*打印结果:zhangsanlisiwangcai*/public class RegexDemo { public static void main(String[] args) { //将姓名字符串中的字线去除。 String str="张三ooooooo李四bbbbb旺财"; String regex="(.)\\1+";//将任意字符定义为组,第二位使用重复第一组内容,重复一次或多次。 String [] arr=str.split(regex); for(String s:arr){ System.out.println(s); } }}/*打印结果:张三李四旺财*/
3,替换
调用 String类中的replaceAll(String regex,String str);用指定的字符串,替换匹配指定正则表达式的字符串。
如:
public class RegexDemo { public static void main(String[] args) { //将姓名字符串中的一人叠词替换多个叠词。 String str="张三ooooooo李四bbbbb旺财"; String regex="(.)\\1+";//将任意字符定义成组,第二位重复第一位的内容,重复多次。 str=str.replaceAll(regex, "$1");//$1表示,使用第一组的内容。 System.out.println(str); }}/*打印结果:张三o李四b旺财*/
4,获取
要获取匹配正则表达式的字符串,需要调用Matcher对象中的group()方法,所以这里可以先将正则表达式封装成Pattern对象,再通过此对象的matcher(String str)方法,获取Matcher对象。
如:
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexDemo { public static void main(String[] args) { //获取字符串中三个字母的字符串。 String str="abc fafa afaei ppp opo ip oopp oe4 33 eee iii"; Pattern p=Pattern.compile("\\b[a-z0-9]{3}\\b"); Matcher m=p.matcher(str); while(m.find()){ System.out.println(m.group()); } }}/*打印结果:abcpppopooe4eeeiii*/
- 黑马程序员-正则表达式
- 黑马程序员 正则表达式
- 黑马程序员:正则表达式
- 黑马程序员---正则表达式
- 黑马程序员:正则表达式
- 黑马程序员--正则表达式
- 黑马程序员--正则表达式
- 黑马程序员--正则表达式
- 黑马程序员--正则表达式
- 黑马程序员 正则表达式
- 黑马程序员-正则表达式
- 黑马程序员:正则表达式
- 黑马程序员-正则表达式
- 黑马程序员 正则表达式
- 黑马程序员---正则表达式
- 黑马程序员---正则表达式
- 黑马程序员-正则表达式
- 黑马程序员--正则表达式
- c++prime重学(三)基于第四版
- codeforces problem/415/A
- Python+Django+SAE系列教程4-----操作文件
- Spring mvc中@RequestMapping 6个基本用法小结
- eth0,eth1,eth2,lo是什么意思?
- 黑马程序员--- 正则表达式
- 第6周作业3-Fibonacci数列(网络131黄宇倩)
- 如何在Linux下安装和配置phpMyAdmin?
- 探究中水回用工艺中反渗透装置的操作工艺
- 关于函数返回值的一些见解
- ASP.NET CS0433错误解决办法
- C++ - 虚继承(virtual inheritance) 详解
- UI控件----ProgressBar进度条 实例总结
- 我的声音在笑泪在飙