0

我想根据搜索字符串查找单词(这意味着之前和之后的空格),例如:

String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";

我想找到所有包含字符串"aa" 的单词答案将是单词:

"sdaaf" , "hgfaaf" , "dgffaasdf"
4

4 回答 4

2

您不能通过正则表达式解决此问题,因为有更直接的方法可以解决此问题。

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);
    }  
]  
于 2012-10-24T18:18:29.290 回答
1
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

您可以更改模式以满足您的需求。

于 2012-10-24T18:27:14.467 回答
0

依次按照以下步骤获取所有单词"aa": -

  • 在空间上拆分您的字符串 -String#split为此目的使用方法。这将为您提供一个字符串数组,其中所有元素用空格分隔。

  • 然后遍历您获得的 String 数组。

  • 对于每个元素,检查它是否包含您的序列-为此目的"aa"使用方法。String#contains

  • 对于每个包含“aa”的元素,打印它们,或者您可以将它们添加到ArrayList您必须事先创建的 中。
于 2012-10-24T18:18:49.803 回答
0

这是一个完整的解决方案,使用与您的每个单词匹配的正则表达式:

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());
于 2012-10-24T18:21:25.237 回答