開始使用免費開始

問號的兩個意義

當你清楚知道有哪些有效選項,且確定其中一個一定會出現時,or 運算子很實用。但如果你想比對的樣式中,有一部分有時存在、有時不存在呢?這時就用問號 ?

? 可以讓前一個群組或字元變成可選。即使樣式中的某一部分缺席,加入它後,正則表達式仍然會比對成功。不過要注意,若它放在像 *+ 這類乘數之後,問號還有第二種效果:

? 也可以讓前一個乘數變「惰性」而不是「貪婪」。也就是說,正則表達式原本會嘗試匹配最多的字元數量,而加上 ? 後,會改為尋找最少的文字匹配。

本練習屬於課程

R 中級 Regular Expressions

檢視課程

練習說明

  • 透過將最後一個 "s" 設為可選,讓單數 "Screen" 與複數 "Screens" 都能匹配。
  • 使用 .* 在逗號前匹配任意數量的任意字元。
  • 在星號後加入問號 ? 以匹配同樣的樣式——你看出差別了嗎?

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Match both Screen and Screens by making the last "s" optional
str_match(lines, pattern = "Screens___")

# Match a random amount of arbitrary characters, followed by a comma
str_match(lines, pattern = "___,")

# Match the same pattern followed by a comma, but the "lazy" way
str_match(lines, pattern = "___,")
編輯並執行程式碼