java正则表达式

匹配字符串的方法

String类中的matches方法,功能强大,可以匹配符合一个模式的字符串集。如,以下结果都为true。

"java is fun".matches("java.*");
"java is cool".matches("java.*");
"java is nb".matches("java.*");

正则表达式的语法

注意点:

  1. 反斜杠 “” 在java中用 “\” 来表示。
  2. 空白字符 ‘\s’ 为:’ ‘、’\t’、’\n、’\r’、’\f’.
  3. 在正则表达式中,默认“贪婪”得匹配,即能多匹配尽可能多匹配
  4. 若想“懒惰”得匹配,则在正则表达式后加上‘?’
正则表达式匹配示例
x指定字符xjava 匹配 java
.除了换行符外的任意单个字符java 匹配 j…a
(ab|cd)ab或者cdten 匹配 t(en|im)
[abc]a、b或cjava 匹配 ja[sdvc]a
[^abc]除了a、b或c意外的任意字符java 匹配 ja[^edg]a
[a-z]a到zjava 匹配 [a-m]av[a-d]
[^a-z]除了a到z以外的任意字符java 匹配 jav[^f-l]
[a-e[m-p]]a到e或m到pjava匹配 [a-g[i-m]]av[a-d]
[a-e&&[c-p]]a到e与c到p的交集java 匹配 [a-p&&[i-m]]av[a-d]
\d一位数字,等同于 [0-9]java1 匹配 java[\d]
\D一位非数字java# 匹配 jav[\D][\D]
\w单词字符java 匹配 jav[\w]
\W非单词字符java# 匹配 java[\W]
\s空白字符java 2 匹配 java\s2
\S非空白字符java 匹配 [\S]ava
p*0或多次出现paaaa匹配 “a*”
abab 匹配 “(ab)*”
p+1或多次出现pa匹配 “a+b*”
edgnb 匹配 “(edg)+.*”
p?0或1次出现pjava 匹配 “j?java”
ava 匹配 “j?ava”
p{n}正好出现n次paaaa匹配 “a{4}”
java 不匹配 “.{2}”
p{n,}至少出现n次paaaa匹配 “a{2,}”
a 不匹配 “a{2,}”
p{n,m}n到m次出现paaaa匹配 “a{1,9}”
abbb 不匹配 a{2,9}bbb",
\p{P}一个标点字符~!@#$%^&*()等j?va匹配 “j\p{P}va”

替换和拆分字符串

String类包含replaceAll、replaceFirst 和 split方法,用于替换和拆分字符串。
下面展示一些 内联代码片

//replaceAll()方法
System.out.printLn("java java java".replaceAll("v\\w","wi"));
//输出 jawi jawi jawi
//replaceFirst()方法
System.out.printLn("java java java".replaceFirst("v\\w","wi"));
//输出 jawi java java
//split(regex,limit=0)方法
//使用匹配的分隔符将字符串拆分为子字符串
//limit>0时,最多匹配limit-1次,最终拆分成limit个子字符串。
String[] tokens;
tokens="edg1zhen2ta3ma4niu5bi".split("\\d");
System.out.printLn(tokens);
//输出 edg zhen ta ma niu bi
tokens="edg1zhen2ta3ma4niu5bi6".split("\\d",1);
System.out.printLn(tokens);
//输出 edg1zhen2ta3ma4niu5bi
tokens="edg1zhen2ta3ma4niu5bi6".split("\\d",2);
System.out.printLn(tokens);
//输出 edg zhen2ta3ma4niu5bi
tokens="edg1zhen2ta3ma4niu5bi6".split("\\d",3);
System.out.printLn(tokens);
//输出 edg zhen ta3ma4niu5bi
tokens="edg1zhen2ta3ma4niu5bi6".split("\\d",4);
System.out.printLn(tokens);
//输出 edg zhen ta ma4niu5bi
tokens="edg1zhen2ta3ma4niu5bi6".split("\\d",5);
System.out.printLn(tokens);
//输出 edg zhen ta ma niu5bi
tokens="edg1zhen2ta3ma4niu5bi6".split("\\d",6);
System.out.printLn(tokens);
//输出 edg zhen ta ma niu bi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值