Emacs Regular Expression Named Character Class and Syntax Table
In emacs
Regular Expression Syntax,
the meaning of some named character class such as [[:word:]]
is dependent on the current major mode's
Syntax Table.
Syntax table is hard to work with, and regex using it may be unpredictable. Best is just to put the chars you want explicitly in your regex, for example, [A-Za-z0-9]+
.
Use
[[:word:]]+
if you need to match letters of western languages and also Chinese characters or Russian characters etc.
Here's a demo, that some regex depend on syntax table.
;; here's a demo, that some elisp regex pattern depend on elisp syntax table. ;; save this file as test.el, and open it. ;; M-x emacs-lisp-mode ;; put cursor right after the paren, and M-x eval-last-sexp (re-search-forward "[[:space:]]") ;; it'll move cursor to a space ;; now, set space to have word syntax. Eval this (modify-syntax-entry 32 "w" emacs-lisp-mode-syntax-table) ;; try the search above again. Now it won't find any
After the above, you'll need to restart emacs. Because, now cursor moving commands will consider space as part of word.
Emacs Regular Expression
- Regular Expression
- Regex Syntax
- About Quoting Regex
- Case Sensitivity
- How to Insert a Tab or Newline
- Wildcards vs Regex
- Emacs Regex vs Python, JavaScript, Java