我希望能够根据字符对字符串进行分组。
例如,我想将以下URL拆分为两个组:
group 1 - /viewarticle/abd-fdj-gfg-to
group2 - 628882 (last string)
/viewarticle/abd-fdj-gfg-to-628882
我尝试过这个正则表达式 " -(?!.*-) ",但是它没有起作用。
我必须只使用正则表达式,不能使用split函数。
任何帮助都将不胜感激。
()
和 .*- 来捕获第一个输入和剩余部分作为第二个输入,因此请使用:
(.*-)([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
或数字
您可以尝试使用后顾,例如在以下内容上进行拆分:
(?<=-to)-
(?<=abd-fdj-gfg-to)-
-to
前面的内容总是相同才有意义。-(?!.*-)
-(?!.*-)
进行拆分... 这将会在最后一个连字符处进行拆分。 - Tim Biegeleisen