Регулярное выражение для разделения строки в kotlin - PullRequest
2 голосов
/ 10 февраля 2020

Я хочу сгруппировать строки по символам.

Например. Я хочу разделить следующий URL на две группы

group 1 -   /viewarticle/abd-fdj-gfg-to
group2 - 628882 (last string)

/viewarticle/abd-fdj-gfg-to-628882

Я пытался это "- (?!. * -)", но это не работает.

Я должен использовать только регулярное выражение не функция разделения.

Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020

Вы можете попробовать разделить, используя просмотр сзади, например, разделить на:

(?<=-to)-

Вы также можете сделать просмотр более конкретным c:

(?<=abd-fdj-gfg-to)-

Но это только сделает смысл, если то, что предшествует -to всегда будет одинаковым используйте отрицательный взгляд:

-(?!.*-)
1 голос
/ 10 февраля 2020

Вы можете просто использовать группы () с .*-, чтобы захватить первый вход, а остальные как второй, поэтому используйте:

(.*-)([a-zA-Z\\d]+)

Демо

val regex = "(.*-)([a-zA-Z\\d]+)".toRegex() // use only (\\d+) for digits
val matchResults = regex.find("/viewarticle/abd-fdj-gfg-to-628882")!!
val (link, id) = matchResults.destructured
println("Link: $link \nID: $id")

Подробности:

.*-: сопоставить что-либо до последнего -

[a-zA-Z\\d]+: сопоставить 0 или более символов a-zA-Z или цифры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...