多线修改器
默认情况下,插入符^
元字符与字符串中第一个字符前的位置匹配。
鉴于字符串charsequence应用于以下模式:/^char/
&/^sequence/
,引擎将尝试匹配如下:
-
/^char/
- ^ -
- c -
c
harsequence - h -
ch
arsequence - a -
cha
rsequence - r -
char
sequence
发现匹配
- ^ -
-
/^sequence/
- ^ -
- s -
匹配未找到
- ^ -
即使字符串包含行终止符 (例如\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);