如何在java中查找包含正则表达式的单词

时间:2012-10-24 18:15:35

标签: java regex

我希望根据搜索字符串找到单词(表示前后的空格) 例如:

String s = "sdaaf fd hgfaaf ghjfada dgffaasdf";

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

"sdaaf" , "hgfaaf" , "dgffaasdf"

4 个答案:

答案 0 :(得分: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);
    }  
]  

答案 1 :(得分: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

您可以根据需要更改模式。

答案 2 :(得分:0)

按顺序执行以下步骤以获取"aa"的所有字词: -

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

  • 然后迭代获得的String数组。

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

  • 对于每个元素,包含“aa”打印它们,或者您可以将它们添加到ArrayList,您必须事先创建它。

答案 3 :(得分: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());