我正试图为此提出正则表达式,但无济于事。以下是我需要的一些例子。 []
表示数组作为输出。
输入
Hello $World
输出
[$World]
输入
My name is $John Smith and I like $pancakes
输出
[$John, $pancakes]
我设法提出这个问题,它与模式匹配,但不保留它找到的单词。
String test = "My name $is John $Smith";
String[] testSplit = test.split("(\\$\\S+)");
System.out.println(testSplit);
输出
[My name , John ]
正如你所看到的,它完全吞噬了我需要的单词,更具体地说,是与模式相匹配的单词。我怎么能让它返回一个只有我需要的单词的数组? (如例子所示)
答案 0 :(得分:6)
split
采用正则表达式,并专门将字符串分割为正则表达式,以便分割的内容不会保留在输出中。如果你想要它所发现的东西分开,你应该使用Matcher
类,例如:
String line = "My name $is John $Smith";
Pattern pattern = Pattern.compile("(\\$\\S+)");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
这将找到String中模式的所有匹配项并将其打印出来。这些是split
用于分割字符串的相同字符串。
答案 1 :(得分:3)
split
只使用您的模式来分隔字符串。如果要返回匹配的字符串,请尝试以下操作:
String test = "My name $is John $Smith";
Pattern patt = Pattern.compile("(\\$\\S+)");
Matcher matcher = patt.matcher(test);
while (matcher.find()) {
System.out.println(matcher.group());
}