2017-02-25 5 views
1

"[。、?!] + '"という文字列を含む正規表現に基づいて文字列を分割しようとしていますが、分割は起こっていません。ここで文字列Javaで正規表現を使用して分割しますか?

は私のクラスです:

public class splitStr { 
public static void main(String[] args) { 

     String S="He is a very very good boy, isn't he?"; 
     S.trim(); 
     if(1<=S.length() && S.length()<=400000){ 
     String delim ="[ .,?!]+'"; 
      String []s=S.split(delim); 

     System.out.println(s.length); 
for(String d:s) 
{ 
    System.out.println(d); 
} 
     } 
    } 
} 

答えて

0

+'[]は、分割の一部でなければならない文字がありますか?

プラス記号や括弧は正規表現で特別な意味を持っている、とあなたは彼らが試合の一部になりたい場合は、表現をしたい場合、彼らは、そう\

でエスケープしなければならないので、私はこれを聞いていますのよそれはすべてのこれらの文字が含まれ、それは次のようになります。バックスラッシュは、Java文字列内でエスケープする必要があるため、私は\\を書かなければならなかった

delim = "[\\[ .,\\?!\\]\\+']"

注意。また、?+が角かっこで囲まれているためエスケープする必要があるかどうかもわかりません。

私はコンピュータの正面にいませんそれをテストしていないが、私はそれがうまくいくと信じている。

+0

ありがとうございました。それは働いている! –

0

ないすべての区切り文字は、角括弧内にあるので、それが働いていない理由があります。これに

String delim ="[ .,?!]+'"; // you wrote this 

変更:

String delim ="[ .,?!']"; 
関連する問題