Regex 匹配模式

1.匹配模式
a.作用:改变某些结构的匹配规定
b.形式:
I:Case Insensitive-----不区分大小写。
S:SingleLine(dot All)--.号匹配任意字符(换行符也可以)
M:MultiLine------------^字符串中各个行文本的开头$各个文本的结尾
X:Comment--------------可以添加注释。
2.Mode
a.作用:改变某些结构的匹配规定
b.形式:
I:不区分大小写
S:点号通配
M:多行模式
X:注释模式
3.I:不区分大小写
a.作用:在匹配时,不对英文单词区分大小写
在java中在编译正则表达式时:CASE_INSENSITIVE
4.S:单行模式
作用:更改点号.的匹配规定,点号也可以匹配换行符。
在java中在编译正则表达式时: DOTALL
5.M:多行模式
作用:更改^和$的匹配规定,它们可以匹配字符串内部各行文本的开头和结束位置。
\A和\Z则不受影响.
在java中在编译正则表达式时:MULTILINE
6.X:注释模式
a.作用:在正则表达式内部可以使用注释
b.形式:注释以#开头,以换行符结束(或直到表达式的末尾)
c.使用此模式后,会忽略正则表达式中的所有空白字符。
在java中在编译正则表达式时:COMMENTS
7.模式的混合
a.作用:同时使用多个模式
b.形式:在编译正则表达式时,把表示模式的多个参数以竖线"|"连接起来。
8.模式的作用范围
a.作用:精确控制各个模式的作用范围
b.形式:在表达式中,以(?ismx)的方式启用模式,(?i)ABC

以(?-ismx)的方式停用模式.(?i)AB(?-i)C

 

/**
 * 不区分大小写模式
 * */
public class ModeConfict {

	public static void main(String[] args) {

		String str = "abc";

		String regex = "(?-i)ABC";//区分大小写,比模式参数的优先级更高

		// String regex = "ABC";

		Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		//Pattern p = Pattern.compile(regex);

		Matcher m = p.matcher(str);

		if (m.find()) {
			System.out.println("\"" + str + "\" can be matched with regex \""
					+ regex + "\"");
		} else {
			System.out.println("\"" + str
					+ "\" can not be matched with regex \"" + regex + "\"");
		}

	}

}



9.模式的冲突
如果在正则表达式内部,通过模式作用范围指定了模式,而在外部又指定了其他模式参数,
则模式作用范围的优先级更高。

你可能感兴趣的:(java,正则表达式)