2017-03-29 9 views
3

Ich kann nicht verstehen, warum diese einfache Regex nichts passt. Es schlägt immer fehl und löst eine Ausnahme:Regex passt nicht in Kotlin

val match = Regex("""\d+""").matchEntire("A123B")?: throw Exception("Regex fail") 
+2

Sie scheinen eine ganze Zeichenfolge mit '\ d +' abgleichen zu wollen, aber Ihr 'A123B' besteht nicht nur aus Ziffern. –

+1

Nur ein Hinweis: Wenn Sie diese Zeichenfolgen vollständig abgleichen müssen und sie aus alphanumerischen Zeichen bestehen, können Sie das '\ p {Alnum} +' Muster verwenden. Oder wenn nur Großbuchstaben und Ziffern erlaubt sind, verwenden Sie '[A-Z0-9] +'. –

Antwort

3

Sie wollen mit matchEntire und ein \d+ Muster einen ganzen Eingangs zum Spiel:

fun matchEntire(input: CharSequence): MatchResult? (source)
Versuche, den gesamten Eingang CharSequence mit dem Muster übereinstimmen.
Rückgabe Eine Instanz von MatchResult, wenn die gesamte Eingabe übereinstimmt oder nicht.

Allerdings besteht A123B nicht nur aus Ziffern. Verwenden Sie find, wenn Sie eine teilweise Übereinstimmung finden müssen.