我的字符串如下
This is a test\nAnother test\n#art\n#paintings#collections
我从中挑选了一些文字 - 艺术,绘画,收藏品。
我为here编写了一个java程序。代码 -
String str = "This is a test\nAnother test\n#art\n#paintings#collections";
String tag_name ="";
String[] sp = str.split(" |\n");
for (int j =0; j<sp.length; j++) {
//System.out.println(""+sp[j]);
if ( String.valueOf(sp[j].charAt(0)).equals("#")) {
tag_name = sp[j];
String[] np = tag_name.split("#");
for (int k = 0; k<np.length; k++) {
if(np[k].length() >0 ) {
tag_name = np[k].replaceAll("\n", "");
System.out.println(""+ np[k]);
}
}
//System.out.println("" + tag_name);
}
}
请建议我如何使用更强大的正则表达式代码执行此操作。
答案 0 :(得分:1)
如果我理解您的要求,您希望找到#
之后的所有字词。如果是这样,这有效:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
<P>{@code java ArtTypesXmpl}</P>
**/
public class ArtTypesXmpl {
public static final void main(String[] igno_red) {
String sToSearch = "This is a test\nAnother test\n#art\n#paintings#collections";
Matcher mHashThenWord = Pattern.compile("#(\\w+)").matcher(sToSearch);
while(mHashThenWord.find()) {
System.out.println(mHashThenWord.group(1));
}
}
}
输出:
[C:\java_code\]java ArtTypesXmpl
art
paintings
collections
Pattern
上的JavaDoc和Matcher
:http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
答案 1 :(得分:0)
尝试
String[] sp = str.split("\\s|\\n");
来自Here
十二个字符在正则表达式中具有特殊含义:反斜杠\
,插入符^
,美元符号$
,句点或点.
,竖线或竖线符号|
,问号?
,星号或星号*
,加号+
,左括号(
,右括号{ {1}},左方括号)
和开口大括号[
。这些特殊字符通常称为元字符。