2016-10-10 7 views
0

自動モードのalistのEmacs正規表現で.ASMと.Sの両方をどのようにマッチさせるか?auto-mode-alistのEmacs正規表現で.ASMと.Sの両方をどのようにマッチさせるか?

以下のような正規表現を書こうとしましたが、動作しません。つまり、.asmと.sファイルはnasm-modeに属するものとして認識されません。しかし

(require 'nasm-mode) 
(add-to-list 'auto-mode-alist '("\\.\(ASM\)\|S\\'" . nasm-mode)) 

、うまく動作します.ASMのみマッチング簡易版:また

(require 'nasm-mode) 
(add-to-list 'auto-mode-alist '("\\.ASM\\'" . nasm-mode)) 

、なぜ私は大文字を使うのですか? (私はnasm-mode.elの説明に従っています)。

+0

'' \\。\\(ASM \\ | S \\)\\ '"'を試して、 '.'に' ASM'または 'S'を付けてください。 –

答えて

1

質問(文字列の解釈は、第一及び第二の正規表現コード「を使用しています」と、常に、二重の\を使用)への直接の答え:私は

(add-to-list 'auto-mode-alist '("\\.ASM\\'" . nasm-mode)) 
(add-to-list 'auto-mode-alist '("\\.S\\'" . nasm-mode)) 
+0

また、ファイル拡張子が.asmまたは.sの大文字を使用するのはなぜですか? – Shuzheng

1
(add-to-list 'auto-mode-alist `(,(concat (regexp-opt '(".ASM" ".S")) "\\'") . nasm-mode)) 
を使用することになり

(add-to-list 'auto-mode-alist '("\\.\\(ASM\\|S\\)\\'" . nasm-mode)) 

別の方法に

regexp-optは、正規表現ではなく文字列のリストを取り、それらの文字列のいずれかと一致する正規表現を作成します。これは残念なことですが、文字列の長いリストのマッチングには最適です。

+0

ありがとう、それはちょっとしたトリックです! – Shuzheng

関連する問題