2016-06-10 13 views
2

Ich versuche eine Regex zu schreiben, die das n-te Vorkommen einer Zahlenübereinstimmung finden kann (wobei N eine Zahl ist, die in einer for-Schleife inkrementieren kann). Ich kann die Regex dazu bringen, eine Nummer erfolgreich zu finden, aber ich kann nicht erreichen, dass sie einer bestimmten Nummer in der Sequenz entspricht. Die von mir verwendete Regex ist ([0-9]+){2}.Suche nach dem n-ten Vorkommen einer Zahl mit Regex

Was ich versuche, wie die Zahl aus einer Zeichenfolge zu tun ist, herausgreifen: Rot, 12, Grün, 5, Blau, 6

einen regulären Ausdruck verwenden, die 12 dann auswählen kann, 2, dann 3. Ich hatte gehofft, dass der {n} Teil der Regex dies erreichen könnte, aber wenn ich diese Zahl auf 2 setze, anstatt die Nummer 5 wie erwartet herauszusuchen, nimmt sie die 2 in 12 auf, und wenn ich die Zahl einstelle bis 3, ist es überhaupt nicht möglich, ein Spiel zu finden. Könnte jemand einen Einblick geben, was ich falsch mache?

Antwort

2

können Sie diese Regex verwenden N th Nummer wählen:

(?:\D*(\d+)){2} 

ersetzen 2 durch eine beliebige Anzahl Sie wollen. Ihre Anzahl ist in erfassten Gruppe # 1 verfügbar

  • \D passt zu jedem nicht-stellige
  • \d eine Ziffer

RegEx Demo

+1

Diese Community ist erstaunlich! Danke, das hat perfekt funktioniert – user3153443