多线修改器
默认情况下,插入符^元字符与字符串中第一个字符前的位置匹配。
鉴于字符串charsequence应用于以下模式:/^char/&/^sequence/,引擎将尝试匹配如下:
-
/^char/- ^ -
charsequence - c -
charsequence - h -
charsequence - a -
charsequence - r -
charsequence
发现匹配
- ^ -
-
/^sequence/- ^ -
charsequence - s -
charsequence
匹配未找到
- ^ -
即使字符串包含行终止符 (例如\r?\n),也将应用相同的行为。只匹配字符串开头的位置。
例如:
/^/g
┊char\ r \ n
\ r \ n
序列
但是,如果需要在每个行终止符后匹配,则必须在模式中设置多行模式(//m,(?m))。通过这样做,光标^匹配,其对应于该字符串的开头位置的位置,每一行开头 后 1 点 的行终止。
1 在某些类型(Java,PCRE,…)中,如果行终止符是字符串中的最后一个,则^将在行终止符后不匹配。
例如:
/^/gm
┊char\ r \ n
┊\ r \ n
┊sequence
一些支持 Multiline 修饰符的正则表达式引擎:
-
Pattern pattern = Pattern.compile("(?m)^abc"); Pattern pattern = Pattern.compile("^abc", Pattern.MULTILINE); -
var abcRegex = new Regex("(?m)^abc"); var abdRegex = new Regex("^abc", RegexOptions.Multiline) -
/(?m)^abc/ /^abc/m -
abc_regex = re.compile("(?m)^abc"); abc_regex = re.compile("^abc", re.MULTILINE);