Java正则(2)— Pattern 详解(二)

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

猜你喜欢

转载自blog.csdn.net/liupeifeng3514/article/details/80035865