2016-05-05 20 views
4

Ich versuche, die ganze Zeile Text beginnend von ! mit Regex Ich habe etwas wie das gemacht: /(!\w+\s+\S+)/ig die ziemlich nah ist, aber nur für 2 Wörter. Ich möchte Wörter mit einer neuen Zeile vergleichen. Auch ich sehe Problem mit Spoiler in der Mitte des Satzes. anschauliches Beispiel: http://www.rubular.com/r/MXmholsDwERegex passende ganze Zeile

Antwort

4

Sie müssen nur

^!.* 

Siehe updated regex demo

Die ^ entspricht dem Anfang einer Zeile (in Ruby), ! wird eine wörtliche übereinstimmen ! und .* passt auf Null oder mehr Zeichen als ein Newline (wenn Sie Ruby verwenden, was ich von Ihrer Nutzung der Rubulum-Website vermute).

Wenn Sie einen anderen Regex-Flavour als Ruby verwenden, wie JS oder PHP oder .NET, müssen Sie den Modifikator /m - MULTILINE - angeben (z. B. /^!.*/gm in JavaScript).

+1

wie ein Zauber arbeiten :), aber eine Sache - Notwendigkeit hinzuzufügen!
Ausnahme so: '^ !. [^ <] *' – Szmerd

1

Wenn Sie bis zum Ende der Zeile alles passen:

/(!.+)/ 

Wenn Sie sicherstellen möchten, dass es das Format !word--- folgt:

/!\w.+/ 
0

Wenn Sie hinzufügen möchten ein Ausnahme für <br> sollten Sie einen positiven Look-Ahead-Operator verwenden. Bitte beachten Sie auch, dass das Parsen eines HTML-Dokuments mit Regex normalerweise keine gute Sache ist.

Ich denke, Sie sollten <br /> auch betrachten. So würde final reg-ex sein:

^!.+?(?=\<br\>|\<br\s*\/\>|$) 

Es wird hervorgehoben Teile der Probe übereinstimmen unten:!

Spoiler Probe
kein Spoiler
Spoiler
! spoiler mit mehr <br> wörter
! Spoiler bis zu neu < br/> Linie

Spoiler in der Mitte des Satzes

Probe: https://regex101.com/r/nZ0oY9/3