多線修改器

預設情況下,插入符^元字元與字串中第一個字元前的位置匹配。

鑑於字串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 修飾符的正規表示式引擎:

  • Java 的

    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)
    
  • PCRE

    /(?m)^abc/
    /^abc/m
    
  • Python 23 (內建 re 模組)

    abc_regex = re.compile("(?m)^abc");
    abc_regex = re.compile("^abc", re.MULTILINE);