2017-06-29 6 views
3

Ich habe eine Menge suchen, aber ich denke, es ist nur über meinen Kopf. Ich kann nicht herausfinden, was ich tun soll, um diesen Text zu analysieren.Regex für den angegebenen Text, dann alles außer einem angegebenen Text, dann irgendetwas, dann angegebenen Text

Lets sagen, ich habe die Saiten: Fall 1: „hallo hallo, wie Sie heute tun!“ Fall 2: „hallo hallo, wie geht es Ihnen heute“ Fall 3: „hallo hallo, tun Sie heute " Fall 4:" Hallo! Hallo, wie geht es dir heute Blabla "

Wenn ich wo where's Text übereinstimmen wollte, dann" Hallo "dann jeden Text (aber nicht", tun "und endet mit "heute", wie würde das geschehen?

Unter http://www.regexpal.com/ verwende ich (hello)((?!, doing).*), die Fall 3 nicht auswählt, aber Fall 2 und 4 auswähle, wenn ich nur Fall 1 wählen möchte Hallo?

+1

Sie sagen, Sie möchten nur # 1 auswählen? Nicht # 1 und # 2? Siehe [diese Regex-Demo] (http://www.regexpal.com/?fam=97991). –

+0

Ihre Regex stimmt mit allen 4 Fällen überein. – sln

+0

@ WiktorStribiżew Du hast mir eine Tonne geholfen !!!!! Vielen herzlichen Dank! – Gabe

Antwort

1

können Sie verwenden

^.*?hello(?:(?!,\s+doing).)*today$ 

Siehe regex demo

Einzelheiten:

  • ^ - Beginn der Zeichenfolge
  • .*? - keine 0+ Zeichen außer Zeilenumbruch Zeichen so wenig wie möglich
  • hello - eine wörtliche Teilzeichenfolge
  • (?:(?!,\s+doing).)* - null oder mehr Zeichen außer Zeilenumbruch Zeichen, so viele wie möglich, die als definiert keine Sequenz starten: - ein Komma
  • \s+
    • , - 1+ Whitespaces
    • doing - eine wörtliche Teilzeichenfolge
  • today - ein Literal-Teilstring
  • $ - Ende der Zeichenfolge.
Verwandte Themen