Regex, um nur Text nach Zeichenfolge und vor Leerzeichen zu extrahieren

8

Ich möchte den Text nach der angegebenen Zeichenfolge abgleichen. In diesem Fall der Text für Zeilen, die mit "BookTitle" aber vor dem ersten Leerzeichen beginnen:

%Vor%

Gewünschte Ausgabe ist:

%Vor%

Ich habe versucht: "^BookTitle(.*)" , aber es gibt mir Matches, wo BookTitle: in der Mitte der Zeile ist, und auch all die Sachen nach Leerraum. Wer hilft?

    
user1899415 10.09.2013, 01:27
quelle

3 Antworten

18

Sie können positive lookbehind in Ihrem Muster haben.

%Vor%

Weitere Informationen: Lookahead und Lookbehind Zero-Width Assertions

    
John Woo 10.09.2013, 01:29
quelle
5

Welche Sprache ist das?
Und stellen Sie bitte etwas Code zur Verfügung; Mit dem ^ Anker sollten Sie definitiv nur mit der Zeichenfolge übereinstimmen, die begin mit BookTitle beginnt, damit etwas anderes nicht stimmt.
Wenn Sie sicherstellen können, dass alle Leerzeichen wie in Ihren Beispielen aus den Titeln entfernt werden, sollte ^BookTitle:(\S+) in vielen Sprachen funktionieren.
Erklärung:
^ erfordert, dass die Übereinstimmung am Anfang der Zeichenfolge beginnt, wie Sie wissen.
\s - * low * case bedeutet: Übereinstimmung mit Weiß * s * pace (Leerzeichen, Tab usw.) .)
\S - * oberer * case bedeutet die inverse: passt auf irgendwas ABER whitespace.
\w ist eine andere Möglichkeit: passt auf * w * ord Zeichen (alphanumerisch plus Unterstrich) - aber das wird scheitern Wenn zum Beispiel ein Apostroph im Titel steht.
+ , wie Sie wissen, ist ein Quantifizierer, der "mindestens eine von" bedeutet.
Hoffe das hilft.

    
Edward 10.09.2013 01:51
quelle
3

Mit der 'mehrzeiligen' Regex-Option verwenden Sie etwa folgendes:

%Vor%

Ohne Mehrzeilenoption:

%Vor%     
sln 10.09.2013 03:51
quelle

Tags und Links