本文已参加 [新人创作礼] 活动,一起开启掘金创作之旅
导入
Java使用Pattern 和 Matcher 使用正则
- Pattern(模式)类:编译正则表达式后创建一个匹配模式
- Matcher(匹配)类:使用Pattern实例提供的匹配模式对信息进行正则匹配 注:关于Java转义字符(,\,\\)需注意 1.在Java中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。 转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行(\n)、回车 符(\r)、制表符(\t)。 2. \表示将下一字符标记为特殊字符。如\d表示数字字符匹配,等效于 [0-9]。\w表示匹配任何字类 字符(字母数字下划线),注意包括下划线。与"[A-Za-z0-9_]"等效。 3. 在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。 4. Java正则表达式中匹配一个普通的反斜杠是\\。
使用
Pattern
1. Pattern构造方位是私有的,用静态方法创建Pattern
Pattern compile(String regex)
(regex:给定的正则表达式)
例:
// 匹配{}中0-9的任意数字
Pattern patter = Pattern.compile("\\{\\d}");
Pattern compile(String regex,int flag)
(flag:根据该参数控制正则表达式的匹配行为,取值范围以下表格)
| 编译标志 | 效果 | |
|---|---|---|
| Pattern.CANON_EQ | 当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a/u030A"会匹配"?"。默认情况下,不考虑"规范相等性(canonical equivalence)"。 | |
| Pattern.CASE_INSENSITIVE (?i) | 默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。 | |
| Pattern.COMMENTS (?x) | 在这种模式下,匹配时会忽略(正则表达式里的)空格字符(注:不是指表达式里的"//s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。 | |
| Pattern.DOTALL (?s) | 在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式'.'不匹配行的结束符。 | |
| Pattern.MULTILINE (?m) | 在这种模式下,'^'和''分别匹配一行的开始和结束。此外,'^'仍然匹配字符串的开始,''也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。 | |
| Pattern.UNICODE_CASE (?u) | 在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。 | |
| Pattern.UNIX_LINES (?d) | 在这个模式下,只有'/n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。 |