gpt4 book ai didi

android - 如何从单个字符串中获取多个匹配的模式

转载 作者:行者123 更新时间:2023-11-30 00:06:12 27 4
gpt4 key购买 nike

如何使用 find() 方法获取模式并将匹配的模式存储在数组列表中

输入字符串:9547235617/7865421341

我想获取这两个数字并将其传递给数组。

目前我正在使用下面的模式编译方法来找到如下模式

Pattern number = Pattern.compile("^[789]\\d{9}$");
Matcher matcher = number.matcher(list_string);
if (!matcher.matches()) {
arraylist.add("No number available");
}

elseif (matcher.find()) {
arraylist.add(matcher.group());
}
Log.e("Arraylist value is","==>"+arraylist.tostring());

在这种方法中,它总是进入第一个 if 条件,当尝试在在线示例的其他正则表达式测试程序中运行相同的字符串时,它只匹配最后一个数字作为模式我不知道下一步该做什么希望有人能帮忙

输出:Arraylist 值为 ==>No number available

注意:我需要获取这两个数字并将其添加到数组列表中。目前我对特殊字符使用了拆分并将这些拆分存储到数组列表中,但我想要一种关于正则表达式模式匹配的方法。

最佳答案

matches()仅当匹配完整字符串时才会返回 true。 find()将尝试在与正则表达式匹配的子字符串中找到下一个匹配项。

正则表达式: (?<=^|\/)(?:\b[7-9]\d{9}\b)?

Java代码:

String[] aStr = {"9547235617/7865421341", "6547235617/5865421341", "4547235617/9865421341"};

for(String str: aStr) {
Matcher matcher = Pattern.compile("(?<=^|\\/)(?:\\b[7-9]\\d{9}\\b)?").matcher(str);
while(matcher.find()){
if(matcher.group().equals("")) {
System.out.print("No number available" + "\n");
} else {
System.out.print(matcher.group() + "\n");
}
}
}

输出:

9547235617
7865421341
No number available
No number available
No number available
9865421341

Code demo

关于android - 如何从单个字符串中获取多个匹配的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48959552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com