找到从特殊字符java开始的单词

时间:2011-02-25 06:10:37

标签: java regex

我想在java中的字符串中找到以“#”符号开头的单词。标志和单词之间也可以有空格。

字符串"hi #how are # you"应将输出显示为:

how
you

我用regex尝试了这个,但仍然找不到合适的模式。请帮帮我。

感谢。

5 个答案:

答案 0 :(得分:12)

使用#\s*(\w+)作为正则表达式。

String yourString = "hi #how are # you";
Matcher matcher = Pattern.compile("#\\s*(\\w+)").matcher(yourString);
while (matcher.find()) {
  System.out.println(matcher.group(1));
}

这将打印出来:

how
you

答案 1 :(得分:0)

试试这个表达式:

# *(\w+)

这样说,匹配#然后匹配0或更多空格和1个或多个字母

答案 2 :(得分:0)

我认为你可能最好在字符串上使用split方法(mystring.split(''))并分别处理这两种情况。如果您要让多人更新代码,正则表达式很难维护和阅读。

if (word.charAt(0) == '#') {
  if (word.length() == 1) {
    // use next word
  } else {
    // just use current word without the #
  }
}

答案 3 :(得分:0)

这是一种非正则表达式方法......

  1. 使用#

    替换所有出现的#后跟字符串中的空格

    myString.replaceAll(“\ s#”,“#”)

  2. 使用空格作为分隔字符

    ,将字符串拆分为标记

    String [] words = myString.split(“”)

  3. 最后迭代你的单词并检查主角

    word.startsWith( “#”)

答案 4 :(得分:-1)

     String mSentence = "The quick brown fox jumped over the lazy dog."; 

      int juIndex = mSentence.indexOf("ju");
      System.out.println("position of jumped= "+juIndex);
      System.out.println(mSentence.substring(juIndex, juIndex+15));

      output : jumped over the
      its working code...enjoy:)