字串 *regexp( 字串 *lines, 字串 pattern, 無參數 | 整數 flag );
一個分段是由零個或多個部份(piece)相連成的。它可配對依序符合第一個單元、第二個單元等等。
一個部份是一個可以接著 `*'、`+' 或 `?' 的單元(atom)。一個接著 `*'的單元可配對一串零個或是多個符合的單元。一個接著
`+' 的單元可以配對一串一個或多個符合的單元。一個接著 `?' 的單元則可以配對一個單元或是空字串。
一個單元可以是一個在括弧中的正規描述式(配對這個正規描述式)、一個範圍(range)(後面會說明)、`.'(配對任何單一字元)、 `^'(配對輸入字串開頭的空字串)、一個接著單一字元的 `\'(配對這個字元)或是一個沒有特殊意義的單一字元(配對這個字元)。
一個範圍是一串包含在 `[]' 內的字元。它一般是配對任何在序列中的任何單一字元。如果這個序列是以 `^' 開始,則它只能配對不是來自序列後半部的任何字元。如果在序列中的二個字元被 `-' 所分隔的話,則這是個含有介於它們間所有 ASCII 字元的簡寫(例如, `[0-9]' 可配對任何十進位數字)。要在序列中包含字元 `]'的話,就要將它放在第一個或是最後一個字元。
一般上來說,一串分段的可能性是依由左至右的順序,`*'、`+' 和 `?' 總是儘量地配對最長的字串,巢狀結構則會由外層開始,而連結(concatenated)的結構是由最左邊的開始。將會選用的配對是使用了最早可能性的選擇。如果有多於一個選擇,則下一個也會因第一個選擇而採取同樣的方法(最早可能性),一直持續下去。
舉例來說,`(ab|a)b*c' 可以有二種方式配對 `abc' 。第一個選擇是 `ab' 或 `a';因為 `ab' 較早符合而且可以配對成功,所以它被選用。由於 `b' 已被配對,所以 `b*' 必須配對它最後的可能--空字串,因為它必須遵從較早的選擇。
一個沒有 `|' 而只有一個 `*'、`+' 或 `?' 的特殊情況,它的淨效應是最長可能配對將會被選用。因此,對 `xabbby' 來說,`ab*' 將會配對 `abbbb'。注意到如果改對 `xabyabbbz' 來說,它將只會配對到 `x' 之後的 `ab'。(結果是,決定從哪裡開始配對是第一個要做的選擇,因為其後的選擇也必須遵從它,甚至如果這只是個不太好的決定。)