首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >java中正则表达式的使用

java中正则表达式的使用

作者头像
青山师
发布2023-05-05 17:27:17
发布2023-05-05 17:27:17
4750
举报

java中正则表达式的使用

相关API类的使用示例

java中正则表达式匹配,主要使用api中的个类:PatternMatcherPatternSyntaxException

Pattern 类的静态方法 compile(String regexp) 可以将给定的正则表达式编译成模式。

Matcher 类的实例可以通过已经编译好的模式的方法 matcher(String arg) 获取匹配器。

Matcher 类的 matches() 方法可以获取匹配结果。

Pattern 类的另一个静态方法可以一步匹配正则表达式:Pattern.matches(regexp, arg);,该方法得到的模式实例是不可变的,是多线程安全的。

代码语言:javascript
复制
package byron4j.javaRelationSkill.Regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * java正则表达式API主要3各类:Pattern、Matcher、PatternSyntaxException
 *  * Pattern :  没有提供公有的构造器; 使用compile方法接受一个正则表达式的参数可以返回一个Pattern实例。
 * 
 * @author BYRON.Y.Y
 *
 */
public class RegexpDemo {
    public static void main(String[] args) {
        //String arg = “helloword”;//false
        //String arg = “123”;//false
        String arg = “13712345678”;
        String regexp = “[1-9]{11}”;

        //方式一:
        //step1: 编译正则表达式
        Pattern pattern = Pattern.compile(regexp);
        //step2: 创建一个匹配器(匹配正则表达式)
        Matcher matcher = pattern.matcher(arg);
        //step3: 获取匹配结果
        boolean result = matcher.matches();

        System.out.println(“正则匹配结果:” + result);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

        //方式二:不允许重用已编译的模式。 此类的实例是不可变的,可供多个并发线程安全使用。Matcher 类的实例用于此目的则不安全。
        //等同于 setp1 + step2 + step3
        Pattern.matches(regexp, arg);

        matcher.find();

        /
        String 非a_z = “[^a-z]”;
        System.out.println(Pattern.matches(非a_z, “a”));//true
        System.out.println(Pattern.matches(非a_z, “A”));//false
    }
}
正则表达式
字符类
代码语言:javascript
复制
[abc] a, b, or c 的其中一个字符
[^abc] 任意一个除去 a, b, or c 的字符
[a-zA-Z] 任意一个a-z或者A-Z之间的一个字符 
[a-d[m-p]] 任意一个a-d或者m-p之间的一个字符等同于 [a-dm-p] 
[a-z&&[def]] d, e, or f任意一个字符
[a-z&&[^bc]] a-z中任意非b、c的一个字符,等同于 [ad-z] 
[a-z&&[^m-p]] a-z中任意非m-p中的字符,等同于 [a-lq-z] 
预定义字符类
代码语言:javascript
复制
. 任意字符
\d 任意一个数字,等同于 [0-9] 
\D 任意一个非数字字符,等同于 [^0-9] 
\h 任意一个水平空白字符,等同于 [ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000] 
\H 任意一个非水平空白字符,等同于 [^\h] 
\s 任意一个空白字符,等同于 [ \t\n\x0B\f\r] 
\S 任意一个非空白字符,等同于 [^\s] 
\v 任意一个垂直空白字符,等同于 [\n\x0B\f\r\x85\u2028\u2029]  
\V 任意一个非垂直空白字符,等同于 [^\v] 
\w 任意一个单词字符,等同于 [a-zA-Z_0-9] 
\W 任意一个非单词字符,等同于 [^\w] 
边界匹配类
代码语言:javascript
复制
^ 开始字符,后面接的第一个字符表示是 第一个字符。 
$ 结尾字符,前面的那个字符表示是 最后一个字符。 
\b 单词字符边界
\B 非单词字符边界 
\A 输入的开始 
\G 前一个匹配的结尾 
贪心匹配
代码语言:javascript
复制
X? X, 0个或一个
X* X, 零个或多个
X+ X, 一个或多个
X{n} X, n个
X{n,} X, 至少n个 
X{n,m} X, 至少n个,最多m个 
逻辑操作
代码语言:javascript
复制
XY X后面跟Y 
X|Y X或Y
(X) X, 作为一个组
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java中正则表达式的使用
    • 相关API类的使用示例
    • 正则表达式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档