Wie mache ich einen Teil eines regulären Ausdrucks in Ruby optional?

9

Um Folgendes zu erreichen:

%Vor%

Ich habe den folgenden regulären Ausdruck:

%Vor%

Gibt es eine Möglichkeit, das optional zu machen? also wenn es da toll ist, wenn nicht, stimmt es trotzdem?

    
AnApprentice 09.03.2011, 00:02
quelle

4 Antworten

13

Sicher. Setzen Sie es in Klammern, setzen Sie ein Fragezeichen dahinter. Fügen Sie eines der Leerzeichen ein (ansonsten versuchen Sie, zwei Leerzeichen zu finden, wenn "at" fehlt.)% Co_de% (oder wie jemand anderes vorgeschlagen hat, (at )? , um zu verhindern, dass es erfasst wird).

    
kindall 09.03.2011, 00:06
quelle
11

Vergessen Sie nicht (?:) , um sicherzustellen, dass der in Klammern gesetzte Ausdruck nicht erfasst wird

%Vor%     
Andrew Grimm 09.03.2011 00:07
quelle
2

Andere haben Ihre Antwort bekommen. Dies ist nur eine Nebenre: Reguläre Ausdrücke.

Wenn Sie in regulären Ausdrücken "Bedingungen" angeben, bezieht sich dies auf die Regex-Sprache. Wie jede andere Sprache ist es eine Verzweigung in der Codeausführung, aber der Code ist ein anderer regulärer Ausdruckspfad, der "Code" von regulären Ausdrücken.

Also im psudo-Code: Wenn (Auswertung ist wahr) mache diesen regulären Unterausdruck, sonst mache diesen anderen Unterausdruck.

Diese Bedingung existiert in erweiterten Engines für reguläre Ausdrücke ... Perl.
Perl verwendet die fortschrittlichste Engine für reguläre Ausdrücke, die es gibt. In Version 6 und darüber hinaus wird es ein integraler Bestandteil der Sprache sein, wo sich Code und Ausdruck nahtlos vermischen.

Perl 5.10 hat dieses Konstrukt:
(? (Bedingung) Ja-Muster | Kein Muster).

Bearbeiten Nur eine Warnung, dass, wo Perl geht, jede andere Sprache bis zum regulären Ausdruck folgt.

    
sln 09.03.2011 00:32
quelle
1

Sicher, Sie müssen nur den optionalen Teil gruppieren ...

%Vor%

Und, ok, ich denke, das wird bei at at at entsprechen, also könntest du es einfach tun:

%Vor%     
DigitalRoss 09.03.2011 00:08
quelle

Tags und Links