有一字串,其格式為以逗號 (,) 分隔的記錄,例如 "a","b","c"。當某些欄位之值為空白時,會有逗號相連的情形,例如 "a",,"c"。
現在要用字樣規則式(Regular Expression, Regex)修改空白欄位的表達方式,改成一個空字串 (""),一般我們會寫成 s/,,/,"",/g (by Perl)。不過這種寫法碰到連續多個空白欄位時,例如 "a",,,"c",會變成 "a","",,"c",得不到我們要的結果。因為 Regex 解析器在找到第一組 ,, 後,會把處理指標放在第3個逗號的位置上。當 Regex 解析器進行下一個比對動作時,它將從第3個逗號開始尋找,此時它看到的只有一個逗號,故判定不符合樣式,也就不會進行替換動作。
碰到這種情形,我們要用 look-ahead assertion (前瞻斷言) 處理。 Look-ahead assertion 的語法為 (?=pattern)。See also perlre::Look-Around Assertions。