正则表达式匹配字符串
我想通过正则表达式提取两个数字“[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”。