Pattern结构器是独占的,不许经过new创造Pattern东西,不妨经过Pattern挪用静态本领compile归来Pattern范例。

// Pattern.compile因变量语法

Pattern Pattern.compile(String regex, int flag)

Pattern.compile因变量中两个参数

1、regex 表白设置的准则

2、flag 表白树立的参数典型,重要包括以次几种情景:

(1)Pattern.CASE_INSENSITIVE(?i) 默许情景下,巨细写不明感的配合只实用于US-ASCII字符集。让表白式忽视巨细写举行配合。

(2)Pattern.COMMENTS(?x) 此种形式下,配合时会忽视表白式中空格字符(表白式里的空格,tab,回车)。解释从#发端,从来到这行中断。

(3)Pattern.UNIX_LINES(?d) 此种形式下,惟有’\n’才被认作一条龙的遏止,而且与’.’,’^’,以及’$’举行配合。

(4)Pattern.MULTILINE(?m) 此种形式下,上箭镞和单引号辨别配合一条龙的发端和中断。其余,’^‘仍旧配合字符串的发端,’’也配合字符串的中断。默许情景下,这两个表白式只是配合字符串的发端和中断。

(5)Pattern.DOTALL:此种形式下,表白式’.‘不妨配合大肆字符,囊括表白一条龙的中断符。默许情景下,表白式’.’不配合行的中断符。

范例

//须要截取的字符串

String splitStr = “[user:name] = select name from user”;

// 设置准则

String pattern = "(\\[+)(\\w+)\\:(\\w+)(\\]+)";

//Pattern.compile因变量

Matcher matcher = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE).matcher(splitStr);

while (matcher.find()) { //表白往下遍历

//截掏出来的字符串 [user:name]

String allcon = matcher.group(0);

//截取的发端场所 [

String tableJoin1 = matcher.group(1);

//截掏出来的表名 user

String tableName = matcher.group(2);

//截掏出来的字段名 name

String filed = matcher.group(3);

//截取的中断场所 ]

String tableJoin4 = matcher.group(4);

}