我正在尋找一個正則表達式來分割文本中的文字。 我已經測試正在搜索正則表達式來分割文本中的文字
Regex.Split(text, @"\s+")
但是這給了我,例如用於
this (is a) text. and
this
(is
a)
text
and
但我尋找一個解決方案,這給了我只有四個字 - 沒有(,)。等 還應該用兩個詞分裂樣
end.begin
文本。
我正在尋找一個正則表達式來分割文本中的文字。 我已經測試正在搜索正則表達式來分割文本中的文字
Regex.Split(text, @"\s+")
但是這給了我,例如用於
this (is a) text. and
this
(is
a)
text
and
但我尋找一個解決方案,這給了我只有四個字 - 沒有(,)。等 還應該用兩個詞分裂樣
end.begin
文本。
你可能會更好過匹配的話而不是分裂。
如果您使用Split
(\W
爲Regexident suggested),那麼您可以在開始和結束時獲得額外的字符串。例如,輸入字符串(a b)
會給你輸出:""
,"a"
,"b"
,另有""
,因爲你使用的(
和)
爲分隔符。
你可能想要做的只是匹配單詞。你可以這樣做:
Regex.Matches(text, "\\w+").Cast<Match>().Select(match => match.Value)
然後你會得到的只是單詞,並沒有額外的空字符串在開始和結束。
嘗試這種情況:
Regex.Split(text, @"\W+")
\W
是對應於\w
,這意味着字母數字。
你可以這樣做:
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
由於'Regex.Matches'返回的'MatchCollection'只包含'Match'的實例,'.Cast'比'.OfType '更合適,因爲不需要基於類型的過濾。 –
spender
2012-02-08 13:33:36
@spender,很好的電話。改變。 – 2012-02-08 13:43:34