Android中如何用正则表达式提取文本里15-20位的数字?
Android中提取15-20位数字的实现(类似Python re.findall)
在Android开发中,你可以通过Java或Kotlin的正则API实现类似Python re.findall() 的功能,提取文本中所有长度为15至20位的数字,具体实现如下:
Java 实现
Java中使用Pattern和Matcher类处理正则匹配,通过循环收集所有匹配结果:
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexUtil { public static List<String> findAllNumbers(String text) { List<String> result = new ArrayList<>(); // 定义正则模式:匹配15-20位连续数字 Pattern pattern = Pattern.compile("\\d{15,20}"); Matcher matcher = pattern.matcher(text); // 循环查找所有匹配项并添加到结果列表 while (matcher.find()) { result.add(matcher.group()); } return result; } }
调用示例:
String inputText = "测试文本123456789012345和1234567890123456789,还有1234"; List<String> numbers = RegexUtil.findAllNumbers(inputText); // numbers 将包含 ["123456789012345", "1234567890123456789"]
Kotlin 实现
Kotlin的Regex类提供了更简洁的API,直接通过findAll方法获取所有匹配项:
fun findAllNumbers(text: String): List<String> { val regex = Regex("\\d{15,20}") // 遍历所有匹配结果,提取匹配的字符串 return regex.findAll(text).map { it.value }.toList() }
调用示例:
val inputText = "测试文本123456789012345和1234567890123456789,还有1234" val numbers = findAllNumbers(inputText) // numbers 将包含 ["123456789012345", "1234567890123456789"]
说明
- 正则表达式
\\d{15,20}的含义是匹配连续15到20位的数字,和你提供的Python代码逻辑完全一致。 - Java中
matcher.find()会逐个查找匹配项,matcher.group()返回当前匹配的字符串;Kotlin中regex.findAll()返回所有匹配结果的序列,通过map提取具体值后转为列表,和Python的re.findall()行为一致。
内容的提问来源于stack exchange,提问作者imna
相关产品推荐
相关产品推荐

