2012-02-08 12 views
0

RegularExpressionを検索して、その中のテキストを単語に分割します。 私は RegExを使ってテキストを分割する単語を検索する

Regex.Split(text, @"\s+") 

をテストしてきた。しかし、これは

this (is a) text. and 

this 
(is 
a) 
text 
and 

するための一例を掲載しています。しかし、私は解決策を探し、それが唯一の言葉を私に与えます - なし(、)、。など また、2つの言葉で

end.begin 

のようなテキストを分割する必要があります。

答えて

0

あなたはおそらくは言葉ではなく、分割に一致する方がいいでしょう参照してください。

Split\WRegexident suggestedとする)を使用すると、先頭と末尾に余分な文字列が表示される可能性があります。あなたはセパレータとして()を使用しているので、"""a""b"、および他の"":たとえば、入力文字列(a b)はあなた出力を与えるだろう。

あなたがしたいことは、単語にマッチするだけです。このようにすることができます:

Regex.Matches(text, "\\w+").Cast<Match>().Select(match => match.Value) 

その後、最初と最後に余分な空の文字列はありません。

+0

'Regex.Matches'によって返された' MatchCollection'が 'Match'のインスタンスのみを含んでいるのを見ると、' .OfType 'よりも '.Cast 'が適切です。 – spender

+0

@spender、よろしくお願いします。かわった。 –

5

これを試してみてください:

Regex.Split(text, @"\W+") 

\Wは英数字の意味\wへの対応、です。

あなたが行うことができます
0

var text = "this (is a) text. and"; 

// to replace unwanted characters with space 
text = System.Text.RegularExpressions.Regex.Replace(text, "[(),.]", " "); 

// to split the text with SPACE delimiter 
var splitted = text.Split(null as char[], StringSplitOptions.RemoveEmptyEntries); 

foreach (var token in splitted) 
{   
    Console.WriteLine(token); 
} 

このDemo

関連する問題