2012-04-16 80 views
0

我有這個字符串我已經從File.ReadAllText檢索:正則表達式來隔離特定的子

6 11 rows processed 

正如你可以看到有始終是一個整數,指定本文檔中的行號。我感興趣的是它後面的整數和單詞「行處理」。所以在這種情況下,我只對子字符串「11行處理」感興趣。

因此,知道每一行將以一個整數開頭,然後是一些空格,我需要能夠隔離它後面的整數和單詞「行處理」,並將其自身返回到一個字符串。

有人告訴我,這是很容易用正則表達式做,但到目前爲止,我一點也不知道線索如何構建它。

回答

2

這應該對你所需要的工作:

\d+(.*) 

這個搜索1個或多個數字(\d+),然後在一組會把所有東西算賬:

. = any character 
* = repeater (zero or more of the preceding value (which is any character in the above 
() = grouping 

然而,傑森正確的是你只需要使用分割功能

+0

你能解釋它是如何工作的? – gdoron 2012-04-16 20:47:13

+0

是的。我猜你是對的。我只是想這是一個簡單的進入正則表達式。 – 2012-04-16 21:44:38

+0

@fullNelson那麼,如果你真的想要,可以隨意使用它:-p。與往常一樣upvotes /接受的答案是升值對SO手段:d – 2012-04-16 21:46:03

5

你不需要正則表達式。剛剛拆分的空白:

var fields = s.Split(new char[0], StringSplitOptions.RemoveEmptyEntries); 
Console.WriteLine(String.Join(" ", fields.Skip(1)); 

在這裏,我使用的,如果你傳遞一個空數組作爲char []參數String.Split,它分裂的所有空白的事實。

+0

謝謝。我想用正則表達式在這種情況下,剛剛開始熟悉它。 +1的.NET使用。對其他人也應該有所幫助。 – 2012-04-16 21:46:37

0

實例PHP(C#正則表達式應該是兼容):

$line = "6 11 rows processed"; 
$resp = preg_match("/[0-9]+\s+(.*)/",$line,$out); 

echo $out[1]; 

我希望我逮住你的觀點。

1

這是使用下面的正則表達式Regex.Replace()輕鬆完成......

^\d+\s+ 

所以它會是這樣的:

return Regex.Replace(text, @"^\d+\s+", ""); 

基本上你只是修剪的第一個數字\d和下面的空格\s

1

如果你需要使用正則表達式將是這樣的:

string result = null; 
Match match = Regex.Match(row, @"^\s*\d+\s*(.*)"); 
if (match.Success) 
    result = match.Groups[1].Value; 

正則表達式從行開始一致:第一空間如果有的話,那麼數字,然後更多的空間。最後它提取其餘行並將其作爲結果返回。

+0

感謝您對一些.NET代碼的使用正則表達式。 +1。 – 2012-04-16 21:45:47