2017-02-08 14 views
0

最初にスペースで区切りたい文字列があります。その後、特殊文字と単語を区切ります。例については特殊文字で終わる分割文字列 - Java

、さんが入力されたとしましょう:

Hi, How are you??? 

私はすでにここにスペースによって分割するためのロジックを書いた:

String input = "Hi, How are you???"; 
String[] words = input.split("\\\\s+"); 

、私は特別な文字から各単語を区切るしたいです。例えば

{"Hi", ","}から"Hi,""you???"

{"you", "???"}に文字列はそれを無視し、任意の特殊文字で終わっていない場合。

Javaの正規表現とコードでこれを手伝ってもらえますか?正規表現に続き

+0

あなたは単語と非単語/非空白チャンクに文字列をトークン化されています。ここでは、コードのですか? http:// ideoneを確認してください。com/iOC7pS –

+2

探している正確な出力を正確に教えてください。 –

+0

**正規表現**または** java **コードが必要ですか? –

答えて

0

はあなたを助ける必要があります。

(\s+|[^A-Za-z0-9]+)

を。これは、Javaの正規表現ではありませんので、あなたは、バックスペースを追加する必要があります。

これは、空白文字\s+と一致し、ではなく、の文字列に一致します。A-Za-z0-9です。これは、特殊文字の正規表現がない(または少なくとも私が知ることができない)ため、回避策です。

この正規表現hereをテストできます。

この正規表現をsplit関数で使用すると、その単語が返されます。特別な文字や空白ではありません。

UPDATE

ここSO上でこのanswerによると、Javaは任意のアルファベット以外の文字にマッチした、\P{Alpha}+を持っています。だから、試みることができる:私は特別な文字から各単語を分けたい

(\s|\P{Alpha})+

0

たとえば、「こんにちは」、{「こんにちは」、「、」}、「あなたですか?」 { "あなた"、 "???"}

行動の上に達成するための正規表現

String stringToSearch ="Hi, you???"; 

Pattern p1 = Pattern.compile("[a-z]{0}\\b"); 
String[] str = p1.split(stringToSearch); 
System.out.println(Arrays.asList(str)); 

出力:

[こんにちは、、、あなた、???]

0

@マイクは正しいです...私たちは特殊文字で文を分割し、単語を残しておく必要があります。

`public static void main(String[] args) { 
    String match = "Hi, How are you???"; 
    String[] words = match.split("\\P{Alpha}+"); 
    for(String word: words) { 
     System.out.print(word + " "); 
    } 
}` 
関連する問題