Logisch oder in Lua-Mustern?

8

Ist es möglich, in Lua zu erreichen?

%Vor%

Der Punkt hier ist die fehlende Akzeptanz von logischen 'oder' Aussagen in Lua-Mustern.


BEARBEITEN: Habe gerade erkannt, dass dies möglich ist:

%Vor%

Obwohl logisch 'oder' für Muster noch fehlt.

    
Yuri Ghensev 11.08.2010, 20:09
quelle

3 Antworten

6

Lua verwendet keine regulären Standardausdrücke für die Mustererkennung. Ein Zitat aus dem Buch Programmierung in Lua erklärt den Grund:

  

Im Gegensatz zu anderen Skriptsprachen verwendet Lua keine regulären POSIX-Ausdrücke (regexp) für die Mustererkennung. Der Hauptgrund hierfür ist die Größe: Eine typische Implementierung von POSIX regexp benötigt mehr als 4.000 Zeilen Code. Dies ist größer als alle Lua-Standardbibliotheken zusammen. Im Vergleich dazu hat die Implementierung des Mustervergleichs in Lua weniger als 500 Zeilen. Natürlich kann der Mustervergleich in Lua nicht alles, was eine vollständige POSIX-Implementierung tut. Dennoch ist der Mustervergleich in Lua ein leistungsfähiges Werkzeug und enthält einige Funktionen, die mit Standard-POSIX-Implementierungen schwer zu vergleichen sind.

Es gibt jedoch viele Bindungen zu vorhandenen regulären Expressionsbibliotheken und auch zu den fortgeschrittenen LPeg Bibliothek. Eine Liste mit Links finden Sie unter Ссылка , Kapitel Text processing .

Siehe auch diese Frage: Lua-Mustervergleich im Vergleich zu regulären Ausdrücken

    
Michal Kottman 13.08.2010, 09:57
quelle
3

Lua Mustererkennung ist nicht das Gleiche wie reguläre Ausdrücke und hat kein alternatives Konzept. p>

Wenn Sie zum Beispiel "abc" oder "efg" vom Ende einer Zeichenkette entfernen möchten (ähnlich wie "(abc|efg)$" regulärer Ausdruck), würde der folgende Code gut funktionieren:

%Vor%     
gwell 11.08.2010 23:07
quelle
0

Lua reguläre Ausdrücke sind ... abnormal. Soweit ich es aus der Dokumentation ersehen kann, gibt es keine Unterstützung für den generellen Wechsel oder die Anwendung von Wiederholungsoperatoren auf Gruppen. In Ihrem Fall, wie Sie sagen, können Sie mit einer Zeichenklasse bekommen, was Sie wollen (ich bin mir nicht sicher, was das Komma in Ihrer Zeichenklasse tut).)

Siehe hier: Ссылка

(In einem Projekt, an dem ich früher gearbeitet habe, haben wir deswegen unsere eigene Lua-Bindung an PCRE geschrieben.)

    
zwol 11.08.2010 22:17
quelle

Tags und Links