2010-10-17 75 views

回答

4

這應該工作:!^ \ w +

MatchCollection matches = Regex.Matches (inputText, @"^!\w+"); 

foreach (Match match in matches) 
{ 
     Console.WriteLine (match.Value); 
} 
+0

確實有效,但它只返回第一個匹配 – david 2010-10-17 04:29:25

+0

是的,它確實有效。我必須將RegexOptions設置爲多行。 感謝您的幫助;) – david 2010-10-17 04:40:22

+0

你不得不使用Multiline?你的正則表達式字符串和你想要匹配的是什麼樣子? – 2010-10-17 05:05:02

6

我會說,你的正則表達式是相當確定已經,您只需要使用\w(字母數字字符),而不是\d(位):

@"\B!\w+\b" 

將匹配立即被一!除非!本身由字本身之前先(這是\B所斷言的)任何字。相反,使用^會將匹配限制爲從行首開始的單詞,而這可能不是您想要的。

因此,這將匹配所有單詞,包括恰好一個在此行之前!

!hello !this ...!will !!!be !matched! 

但沒有在這一行的話:

this! won't!be matched!!! 

你也下降了\B共如果你不介意在this!that中匹配!that

+0

+1 Good catch Tim!這是真正的答案。不幸的是,我在解決問題的全部領域之前回答了問題。 – Nescio 2010-10-17 08:43:34

相關問題