Next: , Previous: , Up: 使用正規表示式   [Contents]


3.6.2.3 匹配多種 pattern

講完了對於出現次數的描述,接著提一下如果想同時可以匹配不同的 pattern 要怎麼做。 這個時候需要一個特殊符號 ‘\|’ 。 比如我們想同時可以找 ab, cd,可以寫成 ‘ab\|cd’ 。 也就是說 ‘\|’ 會將整個 pattern 切成兩半,前半和後半都是可以被匹配的正規表示式。 所以如果很閒,可以用 ⟨ pattern ⟩ ‘\|’ ⟨ pattern ⟩ ‘\|’ ⟨ pattern ⟩ ‘\|’…,將所有想匹配的 pattern 一次寫滿。 如果不想整個正規表示式被切成兩半,而是只切一部份呢? 比如我們想找 ab, ac,雖然可以用 ‘ab\|’ 作為 pattern,但如果 a 被代換成一個很長的字串比如說 abcdefghijk,這樣就要打很長。 這有兩種解決方式

  1. 用 ‘[]’ 語法
    []’ 裡面描述了可以接受字元集合,而一個 ‘[]’ 只會匹配到一個字元。 比如上面的例子,我們可以寫成 ‘a[bc]’ 。
  2. 用子樣式( subpattern )
    一個被 ‘\(’ 和 ‘\)’ 所包起來的 pattern 會被 group 起來( 不知道怎麼翻比較好 ),被稱為 subpattern。 上面的例子用 subpattern 可以寫成 ‘a\(b\|c\)’ 。

可以看見,用 ‘[]’ 來描述字元集合在這個例子是比較適合的, subpattern 是用來描述更複雜的情況。 比如要找 abc, ade,就無法用 ‘[]’ 來寫,而是要用 subpattern 或是單純的用 ‘\|’ 。