Java Regex将连续的单词和数字返回到arraylist中

问题描述 投票:3回答:3

我正在尝试编写Java RegEx例程,该例程将返回具有以下要求的arraylist”

  1. 删除特殊字符
  2. 将字符串添加到连续的字母字符和连续的数字字符的数组列表中。
  3. 一个空格或一系列空格是定界符。

这里是输入:

Az ma9n,  66  a pk0 lan, a c55an*()al: Pan3afffma

这里是ArrayList中应有的预期输出:

Az, ma, 9, n, 66, a, pk, 0, lan, a, c, 55, an, al, Pan, 3, afffma

这里是我所拥有的,但是还差得远:

String test = "Az ma9n,  66  a pk0 lan, a c55an*()al: Pan3afffma";
List<String> list = new ArrayList<String>();
test = test.replaceAll("[^a-zA-Z0-9|\\s]", "");
Matcher m = Pattern.compile("[a-z+A-Z+0-9+]").matcher(test);

while(m.find()) {
    list.add(m.group());
}

System.out.println(list.toString());
java regex
3个回答
1
投票

执行以下操作:


0
投票

如果您不必花费任何费用使用RegEx,则只需将特殊字符替换为空格并使用String.split()。您仍然需要一种方法来分割包含字符串的数字,或在分割之前在数字序列之前和之后插入空格。


0
投票

如果您使用的是Java 9或更高版本,则可以使用Matcher#results()以紧凑的方式编写它:

© www.soinside.com 2019 - 2024. All rights reserved.