2010-04-05 76 views
4

我想捕獲所有內容(不包括)字符串中的#號。 #字符可能存在也可能不存在(如果它不存在,則應該捕獲整個字符串)。C#正則表達式:捕獲所有內容到

什麼RegEx和C#代碼爲此?我試過:([^#] +)(?:#),但它似乎不起作用。

回答

2

嘗試:

*(=#?)

我認爲應該工作

編輯:

^[^#]* 

在代碼:

string match = Regex.Match(input,"^[^#]*").Value; 
+0

並不完全,這將匹配到最後一切#..我想操作希望一切到第一個# – 2010-04-05 19:48:50

+0

@邁克爾佩蒂託:所以......在'*' – Powerlord 2010-04-05 20:19:27

+0

@OMG後面加一個'?'獨角獸,因爲在這種情況下使用懶惰的量詞似乎,懶得! – 2010-04-05 21:18:22

2

不是正則表達式,而是嘗試的替代方法。雖然可以使用正則表達式,但對於這種特殊情況我更喜歡這種方法。

string mystring = "DFASDFASFASFASFAF#322323"; 
int length = (mystring.IndexOf('#') == -1) ? mystring.Length : mystring.IndexOf('#'); 
string new_mystring = mystring.Substring(0, length); 
+0

我更喜歡這個 - 有時候有一個更簡單的解決方案,正則表達式不需要。 – FrustratedWithFormsDesigner 2010-04-05 19:50:19

+0

這對我來說並不簡單...... – 2010-04-05 19:59:04

+0

我認爲它更具可讀性。 – Gabe 2010-04-05 20:12:29

1

出了什麼問題一樣簡單的東西:

[^#]* 

就拿第一場比賽?