正则表达式
快速入门
快速、高效处理文本,是对字符串进行模式匹配的技术
正则表达式基本语法
- 基本用法
1 | // 需要匹配的文本内容 |
三个常用类
Pattern
正则表达式对象,没有公共构造方法,需要调用其公共静态方法返回一个Pattern对象。
Matcher
Matcher对象是对输入字符串进行解释和匹配的引擎,与Pattern类没有构造方法,需要调用matcher方法来获得对象。
- matches() 尝试将整个区域与模式匹配
PatternSyntaxException
非强制异常类,表示一个正则表达式中的语法错误。
分组、捕获、反向引用
分组
用圆括号组成一个比较复杂的匹配模式,看作一个表达式/一个分组。
(pattern) 非命名捕获 (?
非捕获匹配 (?:pattern) 不存储供以后使用的匹配,常用在or (?=pattern) 执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。 (?!pattern) 执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。
捕获
把正则表达式中的子表达式或分组匹配的内容,保存到内存中以数字或显式命名的组里,用索引进行引用。
反向引用
圆括号的内容被捕获后,可以在这个括号中被使用。引用可以卸载正则表达式内部或外部,内部用\分组号,外部用$分组号。
元字符
限定符
用于指定其前面的字符和组合项连续出现的次数,遵守贪婪匹配(尽可能匹配多的)
* 指定字符重复0-n次 + 指定字符重复1-n次 ? 指定字符重复0 or 1次 {n} 只能输入n个字符 {n,}至少n个匹配 {n,m}至少n个但不多于m个匹配
选择匹配符
分组组合和反向引用符号
特殊字符
字符匹配符号
[] 可接收的字符列表 [^] 不接收的字符列表 - 连字符 · 匹配除了· \\d 匹配单个数字,相当于[0-9] \\D 匹配单个非数字字符 \\w 匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z] \\W 匹配单个非数字、大小写字母字符
\\s 匹配任何空白字符 \\S 匹配任何非空白字符
定位符:规定要匹配的字符串出现的位置
^ 指定起始字符
$ 指定结束字符
\匹配目标字符串的边界(结束位置)
\\B 匹配目标字符串的非边界
String类中使用正则表达式
1 | // 替换功能 |
应用实例
- 实现不区分大小写:(?i)、CASE_INSENITIVE