Pattern 方法
方法 |
说明 |
public static Pattern compile (String regex) |
Pattern的构造方法是私有的,不可以直接创建,通过静态方法compile创建Pattern对象,查看源代码发现compile直接调用了Pattern构造函数。 |
public static Pattern compile (String regex, int flags) |
通过静态方法compile创建Pattern对象,查看源代码发现compile直接调用了Pattern构造函数,该方法允许设置多个Match Flag,如Pattern.CASE_INSENSITIVE|Pattern.UNIX_LINES ,关于Match Flag请参考我的上篇文章。 |
public int flags () ⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢⇢ |
返回当前Pattern对象的Match Flag值,如果设置的值为Pattern.CASE_INSENSITIVE|Pattern.UNIX_LINES ,则返回累加和。Pattern.CASE_INSENSITIVE的值为0x02,Pattern.UNIX_LINES的值为0x01,则flags()返回值为3。 |
public static boolean matches (String regex, CharSequence input) |
是一个静态方法,通过指定的正则表达式regex对input进行正则匹配,该方法适用于只进行一次匹配的任务,且匹配全部字符串。 |
public String[] split (CharSequence input) |
通过正则表达式对input进行分割。通过查看源码可以发现,String.split(String regex) 就是通过Pattern.split(CharSequence input) 来实现的。 |
public String[] split (CharSequence input, int limit) |
功能和String[] split(CharSequence input) 相同,增加参数limit目的在于要指定分割的段数。 |
public String pattern () |
返回字符串类型的正则表达式,也就是compile函数的regex参数值。 |
public Matcher matcher (CharSequence input) |
返回一个Matcher对象。Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input) 方法得到该类的实例。Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作。Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持。 |
public static String quote (String s) |
将字符串 s 转换为正则字面量,正则表达式. 表示匹配除\n 之外的任何字符零次或多次,使用quote进行转换后. 只能匹配.* ,没有当初的正则的含义了。在使用 quote() 方法之后,原有的字符串 s 变成了\Qs\E 的样式,\Q 代表字面内容的开始,\E 代表字面内容的结束。 |
代码示例
import java.util.regex.Pattern;
public class ReMethods {
public static void main(String[] args) {
System.out.println("============split 方法==============");
Pattern pattern = Pattern.compile("\\?|\\*");
printArray(pattern.split("123?123*456*456"));
printArray(pattern.split("123?123*456*456", 2));
System.out.println("============pattern 方法==============");
System.out.println(pattern.pattern());
System.out.println("============quote 方法==============");
String patternStr = Pattern.quote("1252343% 8 567 hdfg gf^$545");
System.out.println("Pattern is : " + patternStr);
}
public static void printArray(String[] strs) {
for (String str : strs) {
System.out.print(str + " ");
}
System.out.println();
}
}
============split 方法==============
123 123 456 456
123 123*456*456
============pattern 方法==============
\?|\*
============quote 方法==============
Pattern is : \Q1252343% 8 567 hdfg gf^$545\E