加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:54:06 所属栏目:百科 来源:网络整理
导读:正则表达式:符合一定规律的表达式 作用:专门用于操作字符串 特点:用一些特定的符号表示一些代码的操作。这样简化书写 好处:可以简化对字符串的复杂操作 弊端:符号定义越多,符号越长,阅读性越差 具体操作功能: 1:匹配(String的matches(regex)方法

正则表达式:符合一定规律的表达式

作用:专门用于操作字符串

特点:用一些特定的符号表示一些代码的操作。这样简化书写

好处:可以简化对字符串的复杂操作

弊端:符号定义越多,符号越长,阅读性越差

具体操作功能:

1:匹配(String的matches(regex)方法),用规则匹配整个字符串,只要有一处不符合就结束,并返回false

2:切割(String的split()方法)

3:替换(String的replaceAll())

4:获得 将祖父传中符合规则的字串取出。步骤①将正则表达式封装成对象②让正则对象和要操作的字符串进行相关联③关联后,获取正则匹配引擎④通过引擎将符合规则的字符串进行取出操作

匹配例子

简单验证qq号码(要求是长度为5—15位的数字)

public static void main(String args[]){
String qq = "18735621s3";
String regex = "[1-9]d{4,14}";
boolean b = qq.matches(regex);
if(!b){
System.out.println("格式正确");
}
else
System.out.println("格式错误");
}

切割例子

public static void splitDemo(){
String str = "zhangsan lisi wangwu";
String regex = " +";//多个空格
String[] arr = str.split(regex);
for(String s:arr){
System.out.println(s);
}
}

注意切割的时候如果是正则表达式里的特殊符号,就要注意了比如“点”

String str = "zhangsan.lisi.wangwu";
String regex = ".";

String str = "c:javaa.text";
String regex = "\";

String str = "shiadiyiaadasofaccasdkhuu";//按照叠词进行切割aa cc uu
String regex = "(.)1";//这里使用正则表达式里的组() 点表示任意字符 java回个组自动编号好1表示第一组相当于重用

替换例子

public static void replaceAllDemo(){
String str = "we19911115qq997922222dianhua1527121111";
String regex = "d{5,}";//多个空格
String newstr = "#";
str = str.replaceAll(regex,newstr);
System.out.println(str);
}

public static void replaceAllDemo(){
String str = "wesdssssdaofueeeassdasduqqq";//将zzzzz——》z
String regex = "(.)1+";//多个空格
String newstr = "$1";//$1获取前边规则中的第一组
str = str.replaceAll(regex,newstr);
System.out.println(str);

}

获取例子

public static void getDemo(){
String str = "ming tian jiu yao fang jia le,tong zhi men ";
String regex = "b[a-z]{3}b";
//讲规则封装成对象
Pattern p = Pattern.compile(regex);
//让正则对象和要做用的字符串相关联,获取匹配器对象
Matcher m = p.matcher(str);

while(m.find()){//讲规则作用到字符串上,并进行符合规则的字串查找
System.out.println(m.group());//获取别配后的结果
System.out.println(m.start()+"·····"+m.end());
}
}

字符
x 字符 x
反斜线字符
n 带有八进制值 0 的字符 n (0<=n<=7)
nn 带有八进制值 0 的字符 nn (0<=n<=7)
mnn 带有八进制值 0 的字符 mnn(0<=m<=3、0<=n<=7)
xhh 带有十六进制值0x 的字符 hh
uhhhh 带有十六进制值0x 的字符 hhhh
t 制表符 ('u0009')
n 新行(换行)符 ('u000A')
r 回车符 ('u000D')
f 换页符 ('u000C')
a 报警 (bell) 符 ('u0007')
e 转义符 ('u001B')
cx 对应于 x 的控制符
字符类
[abc] abc(简单类)
[^abc] 任何字符,除了 abc(否定)
[a-zA-Z] azAZ,两头的字母包括在内(范围)
[a-d[m-p]] admp[a-dm-p](并集)
[a-z&&[def]] def(交集)
[a-z&&[^bc]] az,除了 bc[ad-z](减去)
[a-z&&[^m-p]] az,而非 mp[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
d 数字:[0-9]
D 非数字: [^0-9]
s 空白字符:[ tnx0Bfr]
S 非空白字符:[^s]
w 单词字符:[a-zA-Z_0-9]
W

非单词字符:[^w]

边界匹配器
^ 行的开头
$ 行的结尾
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
Reluctant 数量词
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n
X{n,}? X,至少 n
X{n,m}? X,至少 n 次,但是不超过 m

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读