多线修改器

默认情况下,插入符^元字符与字符串中第一个字符前的位置匹配。

鉴于字符串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);