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

你可能感兴趣的:(Regex 匹配模式)