多線修改器
預設情況下,插入符^
元字元與字串中第一個字元前的位置匹配。
鑑於字串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);