码迷,mamicode.com
首页 > 编程语言 > 详细

正则表达式的使用(Java)

时间:2020-07-20 13:08:56      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:pre   china   regular   简化   print   sch   需要   tool   find   

概述

本文主要介绍正则表达式的代码使用
学习正则表达式的基本语法,可以参考使用手册:https://tool.oschina.net/uploads/apidocs/jquery/regexp.html

但是有几个问题需要特别注意:

① 转义符号 \ 的问题

比如,我们需要匹配一个数字,对应的正则表达式是:\d,因为在 Java 中正则表达式是通过字符串的形式表示的,所以,在 Java 中对应的写法为:"\\d"


正则表达式的作用

我认为,正则表达式的作用有两个:

  • ① 匹配:判断给定的字符串是否符合格式,比如:邮箱地址匹配、密码安全性验证。
  • ② 捕获:查找给定文本,提取出固定格式的字符串,比如:提取出文本中所有的电话号码。

匹配的使用

匹配的使用比较简单,具体代码如下:

//需要匹配的字符串
String str = "abc";

//对应的正则表达式
String regexStr = "[a-z]{3}";

//使用如下代码进行匹配
Pattern p = Pattern.compile(regexStr);
Matcher m = p.matcher(str);
System.out.println(m.matchers());

更简化的写法:

System.out.println("abc".matches("[a-z]{3}"));

捕获的使用

要理解捕获,需要引入一个概念:

捕获组: 给定一个正则表达式:((A)(B(C))),在进行正则表达式匹配查找之后,会产生一个捕获组,顺序为:((A)(B(C))) (A) (B(C)) (C),分别对应编号:0 1 2 3。我们可以使用这个编号从捕获组中得到对应的字符串。

具体代码如下:

String str = "This order was placed for QT3000! OK?";
String regexStr = "(\\D*)(\\d+)(.*)";

Pattern p = Pattern.compile(regexStr);
Matcher m = p.matcher(str);
if (m.find( )) {
    System.out.println("Found value: " + m.group(0) );//This order was placed for QT3000! OK?
    System.out.println("Found value: " + m.group(1) );//This order was placed for QT
    System.out.println("Found value: " + m.group(2) );//3000
    System.out.println("Found value: " + m.group(3) ); //! OK?
} else {
    System.out.println("NO MATCH");
}

注意(pattern) (?:pattern) (?=pattern)等表达式是否会消耗字符,是否会产生捕获,详情可以看文档:https://tool.oschina.net/uploads/apidocs/jquery/regexp.html


Matcher 类

Matcher类有很多功能强大的 API,使用可以参考菜鸟教程:https://www.runoob.com/java/java-regular-expressions.html


参考

[1] 正则表达式使用手册:https://tool.oschina.net/uploads/apidocs/jquery/regexp.html
[2] 菜鸟教程:https://www.runoob.com/java/java-regular-expressions.html
[3] 如何在 Java 中使用正则表达式:https://mp.weixin.qq.com/s/IcATjoRJrOhNQxy9ouderA

正则表达式的使用(Java)

标签:pre   china   regular   简化   print   sch   需要   tool   find   

原文地址:https://www.cnblogs.com/aahorse/p/13344289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!