正则表达式

正则表达式

是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
正则表达式可谓是字符串处理神器,如果说我们需要用string方法去判断一个字符串符不符合我们的要求有时候会特别的麻烦,这时候就可以应用正则表达式去处理,这样问题就会简单很多。
举个例子
判断输入的电话号码是否合法?
1.必须是11位数字
2.必须是1开头
如果要用String方法去处理的话,是可以的但是代码写起来会很复杂,下面演示如何用正则表达式去处理

String rgex = "[1][0-9]{9}"
boolean b = phoneNumber.matches(rgex);
//如果格式正确,返回true

那么上面的正则表达式是什么意思呢?

下面列出的是一些正则表达式中的一些常用规则字符

符号说明
.匹配一个字符
*0 或者n个字符
+1个及以上字符
?1个或者0个
^位于[]中表示取反,位于[]外面表示一行的开头
$一行的结尾
-范围
I或者
&&
\d一个数字,同[0-9]
\D非数字,同[^0-9]
\s空白字符,[ \t\n\x0B\f\r]
\S非空白符
\w大小写字母和下斜杠,同[a-zA-Z_0-9]
\W[^\w]
\b一个单词的边界
{n}出现n次
{n,}至少出现n次
{n,m}n到m次
[n-m]n到m中的一个
[abc]abc中的一个
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次

这样就一目了然了。

split方法截取字符串

在String类中提供的split方法可以方便我们截取字符串,方法中需要传入一个正则表达式。
public String[] split(String regex)
例如:
去除"90=77=88=88=88=99"中的‘=’

String str = "90=77=88=88=88=99";
String[] split = str.split("=");

该方法会返回一个字符串数组。我们遍历输出这个字符串 就可以得到想要的结果。

replaceAll方法替换字符串

在String类中提供的replaceAll方法可以方便我们替换字符串的指定内容,方法需要传入一个正则表达式。
public String replaceAll(String regex,String replacement)
例如:
将”密码:12345678“中的数字替换为‘*’。

String password = "密码:12345678";
String temp = password.replaceAll("[0-9]",'*');

Pattern和Matcher

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。
它包括两个类:Pattern和Matcher
Pattern 一个Pattern是一个正则表达式经编译后的表现模式。
Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
典型的调用顺序是

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

find()和group()
find()对字符串进行匹配,匹配到的字符串可以在任何位置.
group()获取当前位置的字符串。
用法如下:

String str="da jia ting wo shuo, jin tian yao xia yu, bu shang wan zi xi, gao xing bu?";
String regx="\\b[a-z]{3}\\b";//匹配由三个字母组成的单词
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(str);
while (m.find()){
     String s = m.group();
     System.out.println(s);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值