2017-05-21 3 views
-1

Ich versuche, Wörter nur mit Regex in einer Zeichenfolge zu analysieren. Diese Zeichenfolge enthält türkische Zeichen, die çğıİöşü sind.Warum stimmt das Metazeichen Regex b nicht mit den türkischen Zeichen am Ende des Wortes überein?

Ich versuchte \b[\wçğıİöşü]+\b Regex-Muster, aber es funktioniert nicht ganz gut.

enter image description here

In dem obigen Bild erwarte ich das Muster Behiç und Güneş vollständig angepasst werden. Aber es passt nur Behi und Güne wie Sie sehen können. Welches ist das richtige Muster, um Behiç und Güneş zu entsprechen?

+0

Was Regex-Engine haben Sie für die oben verwendet (es war Regex101?) Und speziell, was _encoding_ funktioniert der Motor Einsatz? –

+0

Ja, Sie haben Recht. Der Motor ist Regex101. Ich habe nicht genug Informationen über die "Codierung" des Motors. Es tut uns leid. –

+1

Wenn Sie wirklich diese Regex-Variante verwenden müssen, können Sie eine negative Umgehung verwenden: ['(? horcrux

Antwort

1

Das Ergebnis erhalten Sie, weil der Standard Regex-Modus in Regex101 PCRE (PHP) mit Unterstützung für Unicode-Zeichen ist ausgeschaltet. Wenn Sie den Geschmack zu Python ändern (siehe unten), sehen Sie das erwartete Verhalten.

Aktivieren Sie einfach die Unterstützung für Unicode oder UTF-8 und Ihr Problem sollte gelöst werden.

Demo

+0

Ich ziele nicht auf irgendeine Plattform, versuche nur, Regex detailliert zu lernen und mich zu verbessern. Wenn ich ein Projekt hätte, würde ich es auf .NET C# entwickeln :) Danke für die Hilfe. –

+1

@AliTor Sowohl .NET als auch Java (nach meinem Wissen) unterstützen das Targeting Ihrer türkischen Zeichen mit ihren Unicode-Literalen (z. B. '\ U00E7' für' ç'). Sie könnten dies später als Option betrachten. –

+1

[PCRE Option unterstützt alle Buchstaben, verwenden Sie einfach die richtigen Optionen] (https://regex101.com/r/skmiLz/1). –

Verwandte Themen