JAVA正则表达式

JAVA正则表达式

参考 Java 正则表达式 | 菜鸟教程 (runoob.com)

1.正则表达式是什么

正则表达式(Regular Expression)是一种文本模式,包括普通字符和特殊字符。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

2.正则表达式有什么用

(1) 测试字符串内的模式。

(2) 替换文本。

(3) 基于模式匹配从字符串中提取子字符串。

3.JAVA正则表达式基础

java.util.regex 包主要包括以下三个类:

Pattern 类 Matcher 类 PatternSyntaxException

import java.util.regex.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String pattern = "^abc";
boolean isMatch = Pattern.matches(pattern, content);
//调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象

当解释为正则表达式时,字符串字面值 "\b" 与单个退格字符匹配,而 "\b" 与单词边界匹配。字符串字面值 "(hello)" 是非法的,将导致编译时错误;要与字符串 (hello) 匹配,必须使用字符串字面值 "\(hello\)"。

限定符

(?) 前面的字符可有可无 //如果要前面多个字符就用()括起

(*)前面的字符出现次数在0到无穷

(+)前面的字符出现次数在1到无穷

{数字} 前面字符出现数字次

{数字,} 前面字符至少出现数字次

{数字1,数字2} 前面的字符出现数字1到数字2次

或运算符

(abc|def)可以匹配abc或者def

字符类

[abc]+ 可以匹配由abc组成的字符串

[a-z]+ 可以匹配由a到z组成的字符串

[^a-z]+ 可以匹配除a-z的字符串

元字符

\d 数字字符digit [0-9] \D 非数字字符\\大写同理

\w 单词字符word 任意字母、数字、下划线[A-Za-z0-9_]

\s 空白符Tab和换行

. 任意字符不包括换行符

^匹配行首 $匹配行尾

贪婪与懒惰匹配

正常匹配会匹配尽可能多的字符

加个?会使贪婪匹配转换为懒惰匹配

例如<.+>变成<.+?>从匹配最远一个>到最近一个

Matcher 类的方法

索引方法

public int start()  //返回以前匹配的初始索引。
public int start(int group)  //返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引
public int end()  //返回最后匹配字符之后的偏移量。
public int end(int group) //返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量。

查找方法

public boolean lookingAt()  //尝试将从区域开头开始的输入序列与该模式匹配。
public boolean find()  //尝试查找与该模式匹配的输入序列的下一个子序列。
public boolean find(int start) // 重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
public boolean matches()   //尝试将整个区域与模式匹配。

替换方法

public Matcher appendReplacement(StringBuffer sb, String replacement)   //实现非终端添加和替换步骤。
public StringBuffer appendTail(StringBuffer sb)   //实现终端添加和替换步骤。
public String replaceAll(String replacement) //替换模式与给定替换字符串相匹配的输入序列的每个子序列。
public String replaceFirst(String replacement) //替换模式与给定替换字符串匹配的输入序列的第一个子序列。
public static String quoteReplacement(String s) //返回指定字符串的字面替换字符串。这个方法返回一个字符串,就像传递给Matcher类的appendReplacement 方法一个字面字符串一样工作。        
posted on 2023-03-23 18:37  敲桌ing  阅读(143)  评论(1编辑  收藏  举报