2016-06-28 11 views
1

Ich versuche, das Muster für den Vergleich des letzten Zeichens einer Zeichenfolge zu bestimmen, ist "y" (y $).Regex - wie Zeichen vor dem letzten Zeichen zu testen

Mein Problem ist, wie man auch prüft, ob "y" durch einen Vokal [aeiou] vorausgeht.

+0

Ich sehe wirklich nicht, was das Problem ist. –

+0

Also ... '[aeiou] y $' –

+0

@ MathiasR.Jessen: Bist du sicher ??? –

Antwort

3

Wenn Sie nicht über die Erfassung und nur ein passendes Muster benötigen egal, einfach kombiniert die beide:

[aeiou]y$ 
2

ich auch hier ein weiteren nützlichen Ansatz schreiben wollte - zumindest ist es immer gut zu wissen: das Positive Lookbehind:

~(?<=[aeiou])y$~

Es wird Strings mit Vokal + y wie 'yay', aber nicht 'mollig' haha ​​Endung entsprechen.

Erläuterungen:

  • ~: Begrenzer
  • (?<=): Blick hinter Block
  • [aeiou]: Spiel Charakter unter den Vokalen
  • y: match char buchstäblich
  • $: Ende der Zeichenfolge übereinstimmen

Sie können damit spielen hier auf perfekte Online-Editor: https://regex101.com/r/uJ3eA8/1 :)

0

Ihnen danken. Wie wäre es, wenn Sie die Umkehrung machen? möchte Text, der in y endet, abgleichen, aber y wird NICHT von einem Vokal vorangestellt?

dies scheint zu funktionieren, ich hoffe auf nur einen Test, um den Job zu machen.

Regex:Match(myText, "y$", RegexOptions:IgnoreCase):Success and 
    not Regex:Match(myText, "[aeiou]+.$", RegexOptions:IgnoreCase):Success 
+0

Dann können Sie '~ (? antoni

Verwandte Themen