Java正则表达式

相关链接:正则表达式语法Java- RegexUtilJava - RegexTest

POSIX 字符类(仅 US-ASCII)

\p{Lower}      小写字母字符:[a-z]
\p{Upper}      大写字母字符:[A-Z]
\p{ASCII}       所有 ASCII:[\x00-\x7F]
\p{Alpha}      字母字符:[\p{Lower}\p{Upper}]
\p{Digit}         十进制数字:[0-9]
\p{Alnum}       字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct}       标点符号:!"#$%&'()*+,-./:;<=>?@[]^_{ }~
\p{Graph}      可见字符:[\p{Alnum}\p{Punct}]
\p{Print}         可打印字符:[\p{Graph}\x20]
\p{Blank}       空格或制表符:[ \t]
\p{Cntrl}         控制字符:[\x00-\x1F\x7F]
\p{XDigit}       十六进制数字:[0-9a-fA-F]
\p{Space}       空白字符:[ \t\n\x0B\f\r]


引用

\Q…\E: 引用的部分为文字解析,该部分中的元字符或转义序列将不具有特殊意义
\Q: 引用所有字符,直到 \E
\E: 结束从\Q开始的引用


MatchResult接口

java.util.regex.MatchResult接口表示匹配操作的结果。 此接口包含用于确定与正则表达式匹配的结果的查询方法。可以看到匹配边界,组和组边界,但不能通过MatchResult进行修改。
 
0组表示整个模式的匹配结果。捕获组下标从1开始。

// 返回匹配的起始索引
public int start();
// 返回在此匹配期间由给定组捕获的子序列的开始索引
public int start(int group);
// 返回最后一个字符匹配后的偏移量
public int end();
// 返回给定组在此匹配期间捕获的子序列的最后一个字符之后的偏移量
public int end(int group);
// 返回与上一个匹配匹配的输入子序列
public String group();
// 返回在上一次匹配操作期间由给定组捕获的输入子序列
public String group(int group);
// 返回此匹配结果模式中捕获组的数量
public int groupCount();

Matcher类

Matcher对象是解释模式并对输入字符串执行匹配操作的引擎。 与Pattern类一样,Matcher没有定义公共构造函数。 通过在Pattern对象上调用matcher()方法获取Matcher对象。

\\ 将此匹配器的匹配状态返回为MatchResult,结果不再受此匹配器上执行的后续操作的影响
public MatchResult toMatchResult();

\\ 更改Pattern
public Matcher usePattern(Pattern newPattern);

\\ 重设此匹配器
public Matcher reset();
public Matcher reset(CharSequence input);

\\ 将整个区域与模式进行匹配
\\ 仅当整个区域与该匹配器的模式匹配的时候为true
public boolean matches();
\\ 尝试将输入序列从区域开头开始与模式相匹配
\\ 只有当输入序列的前缀与该匹配器的模式匹配时为true
public boolean lookingAt();

\\ 查找与该模式匹配的输入序列的下一个子序列
\\ 仅当输入序列的子序列与该匹配器的模式匹配的时候为true
public boolean find();
\\ 重置此匹配器,然后查找匹配该模式、从指定索引开始的输入序列的下一个子序列
public boolean find(int start);

\\ 将与模式匹配的输入序列的每个子序列替换为给定的替换字符串
\\ 替换字符串中的'\'和'$'符号有特殊意义,$对捕获子序列的引用,\转义
public String replaceAll(String replacement);
\\ 将与模式匹配的输入序列的第一个子序列替换为给定的替换字符串
public String replaceFirst(String replacement);

\\ 设置该匹配器区域的限制
public Matcher region(int start, int end);
public int regionStart();
public int regionEnd();

Pattern类

模式对象是正则表达式的编译表示。 Pattern类不提供公共构造函数。 要创建模式,必须首先调用其公共静态compile()方法,然后返回Pattern对象。 这些方法接受正则表达式作为第一个参数。

\\ 启用Unix行模式
\\ 在这种模式下,只有'\n'才被认作一行的中止,并且与'.''^',以及'$'进行匹配
\\ 嵌入式标志表达式'(?d)'
public static final int UNIX_LINES = 0x01;

\\ 启用不区分大小写的匹配
\\ 默认情况下,不区分大小写匹配假设仅匹配US-ASCII字符集中的字符。通过将
\\ 'Unicode_case'标志与此标志结合使用,可以启用支持Unicode的不区分大小写匹配
\\ 嵌入式标志表达式'(?i)'
\\ 指定此标志可能会造成轻微的性能损失
public static final int CASE_INSENSITIVE = 0x02;

\\ 允许模式中的空格和注释
\\ 在此模式下,将忽略空白,并忽略以#开头的嵌入注释,直到行尾
\\ 嵌入式标志表达式'(?X)', 例:"(?X)(^.*$)# 注释"
public static final int COMMENTS = 0x04;

\\ 启用多行模式
\\ 在多行模式下,表达式'^''$'分别在行终止符或输入序列的末尾之后或之前匹配。
\\ 默认情况下,这些表达式仅在整个输入序列的开始和结束处匹配。
\\ 嵌入式标志表达式'(?m)'
public static final int MULTILINE = 0x08;

\\ 启用模式的文字解析
\\ 指定此标志后,指定模式的输入字符串将被视为一系列文字字符。输入序列中的元字符
\\ 或转义序列将不具有特殊意义。当与此标志结合使用时,'CASE_INSENSITIVE'
\\ 和'UNICODE_CASE'标志保留其对匹配的影响。其他标志变得多余。
public static final int LITERAL = 0x10;

\\ 启用dotall模式
\\ 在dotall模式下, 圆点'.'匹配任意字符,包含换行符\n。
\\ 嵌入式标志表达式'(?s)'
public static final int DOTALL = 0x20;

\\ 启用支持Unicode大小写折叠`(支持其它语言的大小写转换, 如:希腊语、德语)`
\\ 指定此标志后,由 CASE_INSENSITIVE 标志启用时,不区分大小写的匹配将以符合 
\\ Unicode Standard 的方式完成。默认情况下,不区分大小写的匹配假定仅匹配 
\\ US-ASCII 字符集中的字符。
\\ 嵌入式标志表达式'(?u)'
\\ 指定此标志可能会造成性能损失
public static final int UNICODE_CASE = 0x40;

\\ 启用规范等价
\\ 指定此标志后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配。例如,当指
\\ 定此标志时,表达式 "a\u030A" 将与字符串 "\u00E5" 匹配。默认情况下,匹配不考
\\ 虑采用规范等价。不存在可以启用规范等价的嵌入式标志字符。
\\ 指定此标志可能会造成性能损失
public static final int CANON_EQ = 0x80;

\\ 启用Unicode版本的预定义字符类和POSIX字符类
\\ 嵌入式标志表达式'(?U)'
public static final int UNICODE_CHARACTER_CLASS = 0x100;
Pattern类 - 方法
// 将给定的正则表达式编译为模式
public static Pattern compile(String regex);
public static Pattern compile(String regex, int flags);

// 返回编译此模式的正则表达式
public String pattern();

// 创建一个匹配器,匹配给定的输入与此模式
public Matcher matcher(CharSequence input);

// 返回此模式的匹配标志
public int flags();

// 编译给定的正则表达式,并尝试匹配给定的输入。
public static boolean matches(String regex, CharSequence input);

// 将给定的输入序列分成这个模式的匹配
public String[] split(CharSequence input, int limit);
public String[] split(CharSequence input);

// 返回一个Literal模式的匹配字符串
// 输入序列中的元字符或转义序列将没有特殊的含义
public static String quote(String s);

// 创建可用于匹配字符串的谓词
public Predicate<String> asPredicate();

// 根据给定的输入序列创建一个流,该流与该模式匹配
public Stream<String> splitAsStream(final CharSequence input);

String类

// 告知此字符串是否与给定的正则表达式匹配
public boolean matches(String regex);

// 用给定的replacement替换与给定的regex匹配的此字符串的第一个子字符串
public String replaceFirst(String regex, String replacement);

// 用给定的replacement替换与给定的regex匹配的此字符串的每个子字符串
public String replaceAll(String regex, String replacement);

// 将与target匹配的字符串的每个子字符串替换为指定的replacement
// 开启LITERAL模式的
public String replace(CharSequence target, CharSequence replacement);

// 将此字符串以regex的匹配为分隔拆分为最大长度为limit的String数组
public String[] split(String regex, int limit); 
public String[] split(String regex);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值