正则表达式匹配字符串

我想通过正则表达式提取两个数字“[0-9] +”

var str = "ABcDEFG12345DiFKGLSG938SDsFSd" 

我想提取的是“12345”和“938”。 但我不知道如何在Kotlin这样做。

感谢您的帮助

这应该工作:

 import java.util.regex.Matcher import java.util.regex.Pattern fun main(args:Array<String>) { val p = Pattern.compile("\\d+") val m = p.matcher("ABcDEFG12345DiFKGLSG938SDsFSd") while (m.find()) { println(m.group()) } } 

Pattern.compile("\\d+") ,它会从表达式中提取数字。

与您的示例字符串匹配的正则表达式模式是:

 [a-zA-Z]+[0-9]+[a-zA-Z]+[0-9]+[a-zA-Z]+ 

要定义要提取的组,需要在该模式的相应部分中添加括号:

 [a-zA-Z]+([0-9]+)[a-zA-Z]+([0-9]+)[a-zA-Z]+ 

在Kotlin中匹配并找到这些组,然后像这样工作:

 val pattern = Regex("[a-zA-Z]+([0-9]+)[a-zA-Z]+([0-9]+)[a-zA-Z]+") val str = "ABcDEFG12345DiFKGLSG938SDsFSd" val results = pattern.matchEntire(str)?.groupValues 

现在results是一个List<String>有三个条目: [0]保存整个匹配, [1]保存“12345”, [2]保存“938”。