基本上我想做的是:
String mystr = "hello Benjamin Benny Benn hey hey";
String pattern = "Be";
Desired list = {“Benjamin”,“Benny”,“Benn”};
我知道如何以一种非常简单的方式做到这一点。我正在寻找的是基于正则表达式或任何适合我的方法来快速完成它。我想要一个以特定模式开头的所有子字符串(单词)的列表。
答案 0 :(得分:2)
使用此正则表达式:
Be\w+
它匹配以Be
如果你想用其他任何东西开头,只需这样做:
String startsWith="Be"; // change this to match your requirements
String regexPattern=startsWith+"\\w+"; //escaped backslash
现在,您可以替换startsWith
中的任何内容,这样您就可以匹配以特定字符串开头的单词。
注意:您需要在java中转义反斜杠。因此\
变为\\
答案 1 :(得分:1)
尝试,
String mystr = "hello Benjamin Benny Benn hey hey";
String pattern = "Be";
for(String str : mystr.split("\\s")){
if(str.matches(pattern+"\\w+")){
System.out.println("Matched "+str);
// Add the str to list
}
}
这里,
\\w+
表示 -
单词字符(a-z, A-Z, 0-9, _)
(1次或更多次(匹配尽可能多的数量))
\\s
表示 -
空白(\n, \r, \t, \f, and " ")
答案 2 :(得分:0)
我发现这个答案对我有很大帮助:
String yourString = "hi #how are # you";
Matcher matcher = Pattern.compile("#\\s*(\\w+)").matcher(yourString);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
这样即使你的预字符串与主字符串分开也能正常工作。