()不适用于split函数的正则表达式

时间:2016-03-21 12:11:04

标签: java regex

我试图将String拆分为:

"Stack Overflow #forum #website"; - > "Stack Overflow" "#forum #website"

我尝试使用分割函数,例如:str.split("( )#", 2);,但输出类似于:"Stack Overflow" "forum #website"

似乎()不起作用,我该怎么做才能解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:4)

你需要使用积极的先行断言。

str.split("\\s(?=#)", 2);

小解释:

  • \\s匹配任何类型的空格字符。
  • (?=#)正向前瞻,断言匹配即space应该跟#
  • 因此#forum之前的空格匹配,java根据该空格字符进行拆分。

str.split(" (?=#)", 2);

答案 1 :(得分:0)

public class split {

       public static void main(String args[]){
          String Str = new String("Stack Overflow #forum #website");
 //**********that's what is to be done *************************** 
          System.out.println("Return Value :" );
          for (String retval: Str.split("(?=#)", 2)){
             System.out.println(retval);
          }
 //***********THAT'S WHAT YOU WERE DOING ****************************** 
          System.out.println("");
          System.out.println("Return Value :" );
          for (String retval: Str.split("#", 2)){
             System.out.println(retval);
          }

       }

 }