我想根据搜索字符串查找单词(这意味着之前和之后的空格),例如:
String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";
我想找到所有包含字符串"aa"
的单词答案将是单词:
"sdaaf" , "hgfaaf" , "dgffaasdf"
您不能通过正则表达式解决此问题,因为有更直接的方法可以解决此问题。
String phrase = "aa";
String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";
String[] words = s.split(" ");
List<String> wordList = new ArrayList<String>();
for(String word : words)
{
if(word.contains(phrase))
{
wordList.add(word);
}
]
String regex = "(\\w+aaa\\w+)+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("helaaalo woraaald how are you toaaaday");
while (matcher.find()) {
System.out.print(matcher.group() + " ");
}
输出是:helaaalo woraaald toaaaday
您可以更改模式以满足您的需求。
依次按照以下步骤获取所有单词"aa"
: -
在空间上拆分您的字符串 -String#split
为此目的使用方法。这将为您提供一个字符串数组,其中所有元素用空格分隔。
然后遍历您获得的 String 数组。
对于每个元素,检查它是否包含您的序列-为此目的"aa"
使用方法。String#contains
ArrayList
您必须事先创建的 中。这是一个完整的解决方案,使用与您的每个单词匹配的正则表达式:
final String input = "asdf ljh poiu ddaa aad aa", strToMatch = "aa";
final Matcher m = Pattern.compile(
String.format("\\w*?%s\\w*", Pattern.quote(strToMatch))).matcher(input);
while (m.find()) System.out.println(m.group());