Was ist in regulären Ausdrücken der Unterschied zwischen [: blank:], [: space:] und \ s-?

7

Ich habe in rxletzter Zeit herumgespielt und gerade bemerkt, dass es (mindestens) 3 verschiedene Möglichkeiten gibt, Leerzeichen in regulären Ausdrücken anzuzeigen.

  1. [:blank:]
  2. [:space:]
  3. \s-

Was sind die Unterschiede zwischen jedem von ihnen? Kommt es auf den Major-Modus an?

Malabarba
quelle
3
Was sagt Emacs? ([:space:]und\s-sind die gleichen.)C-h i, Elisp Handbuch ,C-s [:space].
Drew
"Herumspielen";)
Sean Allred

Antworten:

7

Die [:blank:]Zeichenklasse stimmt nur mit den SPC- und TAB-Zeichen überein. Die anderen beiden stimmen mit Leerzeichen überein, die auf der aktiven Syntaxtabelle basieren.

Es scheint keinen Unterschied zwischen [:space:]und zu geben \s-. Letzteres ist eine Instanz der allgemeinen s \ Codemuster auf einer Syntax Klasse basiertes Matching.

Glucas
quelle
1
Ich habe gerade einen kurzen Test durchgeführt, bei dem die Syntaxtabelle in einem Puffer geändert wurde, um zusätzliche Zeichen als Leerzeichen zu verwenden. Testen mit regexp-builderIch kann bestätigen, dass beide [:space:]und \s-die zusätzlichen Zeichen als Leerzeichen übereinstimmen.
Glucas