将文本拆分为与以下正则表达式匹配的标记:\w+(\.?\w+)*

Split the text into tokens which match the following regular expression: \w+(\.?\w+)*

我正在尝试将字符串拆分为与 REGEX 匹配的标记: (\w+(\.?\w+)*)

例如:如果字符串是abc.com wyx-ujk:wxr.c那么

令牌 1) abc.com

令牌 2) wxy

令牌 3) ujk

令牌 4) wxr.c

但是做不到...

这是我的代码:

 String temp="abc.com wyx-ujk:wxr.c";

 Pattern pattern = Pattern.compile("\w+(\.?\w+)*");
 Matcher matcher = pattern.matcher(temp);
 System.out.println(matcher.group());

此方法适用于您的测试用例:

String[] tokens = temp.split("[^\w.]+");

与其关注你的目标 是什么 ,不如关注它是什么 不是


JDK7部分测试代码:

System.out.println(Arrays.toString("abc.com wyx-ujk:wxr.c".split("[^\w.]+")));

输出:

[abc.com, wyx, ujk, wxr.c]

和 JDK8:

Arrays.stream("abc.com wyx-ujk:wxr.c".split("[^\w.]+")).forEach(System.out::println);

输出:

abc.com
wyx
ujk
wxr.c