Regular-Expression

定位:正則表達式重複後綴運算符不適用於 –regextype emacs

  • November 16, 2020

我有一些文件,其名稱的形式krita-NN.kraNN一個具有一到兩位數字的數字。我想讓locate他們使用 Emacs 正則表達式。但是,Emacs 正則表達式的重複後綴運算符( \{n, m\}, \{n\}) 似乎不被locate. 具體來說,兩者

  • locate --regex --regextype emacs 'krita-[0-9]\.kra$'
  • locate --regex --regextype emacs 'krita-[0-9][0-9]\.kra$'

返回相關結果,但在以下工作中沒有正則表達式

  • locate --regex --regextype emacs 'krita-[0-9]\{1,2\}\.kra$;
  • locate --regex --regextype emacs 'krita-[0-9]\{1\}\.kra$.

即使沒有轉義大括號。

問題:是否locate接受手冊頁中聲稱的 Emacs 正則表達式?

注意

  • 這個問題不是在尋找替代解決方案,例如使用find或其他正則表達式類型。
  • locate版本:locate (GNU findutils) 4.7.0

根據@Stéphane Chazelas 的建議,與Emacs regexinfo -n emacs locate不同,Texinfo 文件 ( ) 沒有為 regex 指定重複運算符。相反,正則表達式類型以我期望的語法支持它。即,emacs``grep

locate --regex --regextype grep 'krita-[0-9]\{1,2\}\.kra$

解決了這個問題。

引用自:https://unix.stackexchange.com/questions/619859