L'expression rationnelle correspondant dans Kotlin

Comment puis-je match secret_code_data en chaîne:

xeno://soundcloud/?code=secret_code_data#

J'ai essayé

val regex = Regex("""xeno://soundcloud/?code=(.*?)#""")
field = regex.find(url)?.value ?: ""

sans chance. Je soupçonne ? avant que le code pourrait être le problème, dois-je échapper en quelque sorte. Pouvez-vous m'aider?

  • Pourquoi êtes-vous à l'aide de .*?? Je pense que tu veux dire simplement .*
  • Essayez field = regex.find(input)!!.groups[1]!!.value et de mettre le ? dans une classe de caractères: [?]. Ou quelque chose comme val regex = "xeno://soundcloud/[?]code=(.*?)#".toRegex() // val input = "xeno://soundcloud/?code=secret_code_data#" // val result = regex.find(input)!!.groups[1]!!.value.
  • Je suggère l'analyse de l'url et d'en extraire les paramètres de la requête au lieu d'utiliser des RegEx.
  • J'ai pris la regex, ainsi que l'utilisation d'autres l'analyse des modèles ci-dessous. Regex n'est pas sûr si l'URL de caractères codés, ou vous essayez de décoder comme un ensemble de la chaîne.
  • stackoverflow.com/questions/1732348/...
InformationsquelleAutor ssuukk | 2016-01-04