2016-03-21 1 views
1

では動作しません: -()は、私はのような文字列を分割しようとしているスプリット機能の正規表現

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

私のようなスプリット機能を使用しようとしました:str.split("()#", 2);が、出力は次のようでした。 "Stack Overflow" "forum #website"

()が機能しないようですが、これを修正するにはどうすればよいですか?

ありがとうございます。

+0

、括弧は何の効果もありません。それらを使用する方法について正規表現のマニュアルを見てください。ところで、Web上にはたくさんの正規表現エディタがあります。そのうちの1人があなたを助けるかもしれません。 – hagello

答えて

4

肯定的な先読みアサーションを使用する必要があります。

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

リトル説明:

  • \\sは、スペース文字のいずれかの種類に一致します。
  • (?=#)一致が、つまりspaceの後ろに#の後に続かなければならないと主張する正の先読み。
  • #forumの前のスペースが一致し、javaはそのスペース文字に従って分割されます。あなたの表現で

または

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

それは働いた、少しplzを説明できますか? – Fingal

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); 
      } 

     } 

} 
+0

OUTPUT: - (返り値: スタックオーバーフロー #forumの#website) (戻り値: スタックオーバーフロー フォーラム#website) –

関連する問題