2012-05-30 110 views
1

我知道這個問題似乎是平庸的,但我有一個小問題。我想匹配類似於輸入到這一點:如何匹配第一個單詞?

%!: Word Word=888 Word=AAA 

...使用此正則表達式:

[A-Za-z]* 

我只需要選擇第一個字whitch包含字符。 我的C#代碼:

string res = Regex.Match("[A-Za-z]*", this.Content, RegexOptions.Singleline).Value; 

請幫幫我。這不適合我。

+1

試試這個'@「\ b [A-Za-z] + \ b」' – climbage

回答

4

你基本上就在那裏。

你的正則表達式應該是@"\b[A-Za-z]+\b".

然後,如果你想知道爲什麼你沒有得到任何比賽。這是因爲你混了輸入和模式參數:)

你想:

string res = Regex.Match(this.Content, @"\b[A-Za-z]+\b", RegexOptions.Singleline).Value; 

NOT:

string res = Regex.Match(@"\b[A-Za-z]+\b",this.Content, RegexOptions.Singleline).Value; 

:)

+1

+1對於參數順序很好。 –

+0

失敗!謝謝! :D愚蠢的錯誤。 – user35443

1

[A-Za-z] +觀察括號中的任何事件的一個或多個發生。該*將匹配零個或多個出現。

0

將胡蘿蔔^添加到表達式的開頭以匹配從開始,也就是僅第一個。

1

另一種選擇(如果這可能是有用的需要選擇其他的詞)是匹配所有單詞並先挑選:

new Regex(@"\b[A-Za-z]+\b").Matches("%!: Word Word=888 Word=AAA")[0] 
+1

如果輸入的字符串是100兆字節?啊,你只是編輯添加「(如果你還需要選擇其他的話,這可能很有用)。」好的。很公平。 :) – aquinas

+0

@aquinas,是的,會是災難...... OP的輸入感覺就像某種日誌文件的一些半格式化的字符串 - 所以可能會有用。 –

相關問題