Wie wird das mittlere Zeichen in einer Zeichenfolge mit Regex abgeglichen?

8

Wie könnten Sie in einer langen Zeichenfolge mit einer ungeraden Zahl das mittlere Zeichen abgleichen?

Ist dies mit PCRE, plain Perl oder Java Regex Flavors möglich?

Mit .NET Regex könnten Sie Bilanzgruppen verwenden, um es leicht zu lösen könnte ein gutes Beispiel sein). Mit plain Perl regex meine ich, keine Code-Konstrukte wie (??{ ... }) zu verwenden, mit denen man irgendeinen Code ausführen und natürlich alles machen könnte.

Die Zeichenfolge könnte eine beliebige ungerade Zahlenlänge haben.

Zum Beispiel in der Zeichenfolge 12345 möchten Sie die 3 , das Zeichen in der Mitte der Zeichenfolge erhalten.

Dies ist eine Frage über die Möglichkeiten der modernen Regex-Aromen und nicht über den besten Algorithmus, um dies auf eine andere Weise zu tun.

    
Qtax 20.01.2015, 17:32
quelle

2 Antworten

7

Mit PCRE und Perl (und wahrscheinlich Java) könnten Sie verwenden:

%Vor%

würde das mittlere Zeichen von Strings mit ungerader Länge in der zweiten Erfassungsgruppe erfassen.

erklärt :

%Vor%     
Qtax 20.01.2015, 18:01
quelle
1

Hmm, vielleicht kann jemand eine reine Regex-Lösung finden, aber wenn nicht, könntest du die Regex immer dynamisch so aufbauen:

%Vor%     
BarrySW19 20.01.2015 17:55
quelle

Tags und Links