正则表达式模式从字符串中查找单词

时间:2011-03-08 10:37:21

标签: java regex

我有一个字符串如下。

  

#a女朋友,或赢得争论,

     

但是

     

相同

     

#technology

它应该输出如下。

  

女朋友,或赢得争论,

     

技术

我使用了模式“#\ s *([^#] + $ | \ w *)”来执行此操作。但它只提供输出

  

     

技术

请帮帮我。

以下是我正在使用的代码。

            Pattern pattern = Pattern.compile("#\\s*([^#\n\r]+$|\\w*)");
            Matcher matcher = pattern.matcher(s);
               while (matcher.find()) {
                   System.out.println(matcher.group());

}

5 个答案:

答案 0 :(得分:1)

尝试:

/#\W*(.*)/

它会忽略#之后的所有空格,然后抓住所有空格。

答案 1 :(得分:0)

您可以尝试(#[^#\n]*\n?)

让我知道会发生什么:)

答案 2 :(得分:0)

使用此模式'#\ s *([^#\ n \ r] + $ | \ w *)'并为每场比赛进行迭代。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] argv) throws Exception {

    Pattern pattern = Pattern.compile("pattern");
    Matcher matcher = pattern.matcher("mystring");

    // Find all matches
    while (matcher.find()) {
      // Get the matching string
      String match = matcher.group();
    }
  }
}

答案 3 :(得分:0)

这是一个真正有用的网站,用于测试你的正则表达式,看看你最终会得到什么: http://myregexp.com/

我认为这就是你要找的#\ s *([^#] | \ w )。这就是让你受益的原因。

这意味着在第一个不是#的#[空格]之后给我一切。您没有尝试匹配以#开头的第二行。在第一个不是#

的#之后你正在接受所有的东西

希望有所帮助

答案 4 :(得分:0)

以下是适合您的完整代码:

String s = "# hello!";
Pattern pattern = Pattern.compile("#\\W*([^#]*)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

必须使用matcher.group(1),这样才能获得带括号的捕获组,而不是整个表达式。