繁体   English   中英

正则表达式匹配$符号后跟任何单词并保留单词

[英]Regex to match $ symbol followed by any word and keep the word

我试图为此提出正则表达式,但无济于事。 以下是我需要的一些例子。 []表示数组作为输出。

输入

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 ]

正如你所看到的,它完全吞噬了我需要的单词,更具体地说,是与模式相匹配的单词。 我怎么能让它返回一个只有我需要的单词的数组? (如例子所示)

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用于分割字符串的相同字符串。

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()); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM