2016-06-08 7 views
2

Also ich weiß, dass, um alles in einer Zeichenfolge vor "Theword" schneiden Sie dies tun würden.Wie schneidet man nach einem bestimmten Wort alles aus einer Zeichenkette?

.gsub!(/.*?(?=theword)/im, "") 

Was ich bin nicht sicher, wie zu tun ist alles nach „dem Wort“ in einem String herausgeschnitten und ich frage mich, ob Sie mir diesen regex machen helfen könnten. Es sollte eine Modifikation des obigen Regex sein, aber ich habe es nicht herausgefunden. Vielen Dank!

+3

Einschließlich des Wortes:. '/ Die Wort */mi'. Mit Ausnahme des Wortes: ['.sub! (/ (Das Wort). */Mi," \\ 1 ")'] (http://ideone.com/47Jog4). Beachten Sie, dass "sub" besser geeignet ist, da Sie einen Such- und Ersetzungsvorgang durchführen möchten. –

+0

Danke, funktioniert super. – john2131

+0

Ich habe eine Antwort mit weiteren Optionen gepostet. –

Antwort

0

Hier ist, wie Sie alles erfassen, nachdem die Wort

Grundsätzlich wir das Muster finden, und wir weigern, es zu erfassen mit der: Nicht-Capture-Modifikator, aber wir alles, nachdem es einzufangen.

/(?:.*?theword)(.*)/gm 

https://regex101.com/r/eF4oC7/1

0

alles zu schneiden, bevor "das Wort", verwendete man positive Vorschau. In ähnlicher Weise alles zu schneiden, nachdem „das Wort“, Sie positiven Lookbehind

.gsub!(/(?<=theword).*?/im, "") 
1

Ich sehe, dass durch „Schneiden“ eine Zeichenkette in 2 Teile verwenden können bedeuten, zu splitten.

s.split(/theword/i, 2) 

die IDEONE demo

Siehe Wenn aus irgendeinem Grund, Sie zu entfernen Code verwenden müssen, würde ich vorschlagen, sub mit: Sie können ein split, indem man die Grenze Argument gleich 2 verwenden (da es wird ein suchen und ersetzen in Betrieb):

  • entfernen Sie alle nach einem Wort einschließlich das Wort: .sub!(/theword.*/mi, "") (0.123.)
  • alle nach einem Wort entfernen ohne das Wort: .sub!(/(theword).*/mi, "\\1") (demo)
Verwandte Themen