You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:54:54