我有這個字符串我已經從File.ReadAllText檢索:正則表達式來隔離特定的子
6 11 rows processed
正如你可以看到有始終是一個整數,指定本文檔中的行號。我感興趣的是它後面的整數和單詞「行處理」。所以在這種情況下,我只對子字符串「11行處理」感興趣。
因此,知道每一行將以一個整數開頭,然後是一些空格,我需要能夠隔離它後面的整數和單詞「行處理」,並將其自身返回到一個字符串。
有人告訴我,這是很容易用正則表達式做,但到目前爲止,我一點也不知道線索如何構建它。
我有這個字符串我已經從File.ReadAllText檢索:正則表達式來隔離特定的子
6 11 rows processed
正如你可以看到有始終是一個整數,指定本文檔中的行號。我感興趣的是它後面的整數和單詞「行處理」。所以在這種情況下,我只對子字符串「11行處理」感興趣。
因此,知道每一行將以一個整數開頭,然後是一些空格,我需要能夠隔離它後面的整數和單詞「行處理」,並將其自身返回到一個字符串。
有人告訴我,這是很容易用正則表達式做,但到目前爲止,我一點也不知道線索如何構建它。
這應該對你所需要的工作:
\d+(.*)
這個搜索1個或多個數字(\d+
),然後在一組會把所有東西算賬:
. = any character
* = repeater (zero or more of the preceding value (which is any character in the above
() = grouping
然而,傑森正確的是你只需要使用分割功能
你不需要正則表達式。剛剛拆分的空白:
var fields = s.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(String.Join(" ", fields.Skip(1));
在這裏,我使用的,如果你傳遞一個空數組作爲char []
參數String.Split
,它分裂的所有空白的事實。
謝謝。我想用正則表達式在這種情況下,剛剛開始熟悉它。 +1的.NET使用。對其他人也應該有所幫助。 – 2012-04-16 21:46:37
實例PHP(C#正則表達式應該是兼容):
$line = "6 11 rows processed";
$resp = preg_match("/[0-9]+\s+(.*)/",$line,$out);
echo $out[1];
我希望我逮住你的觀點。
這是使用下面的正則表達式Regex.Replace()
輕鬆完成......
^\d+\s+
所以它會是這樣的:
return Regex.Replace(text, @"^\d+\s+", "");
基本上你只是修剪的第一個數字\d
和下面的空格\s
。
如果你需要使用正則表達式將是這樣的:
string result = null;
Match match = Regex.Match(row, @"^\s*\d+\s*(.*)");
if (match.Success)
result = match.Groups[1].Value;
正則表達式從行開始一致:第一空間如果有的話,那麼數字,然後更多的空間。最後它提取其餘行並將其作爲結果返回。
感謝您對一些.NET代碼的使用正則表達式。 +1。 – 2012-04-16 21:45:47
你能解釋它是如何工作的? – gdoron 2012-04-16 20:47:13
是的。我猜你是對的。我只是想這是一個簡單的進入正則表達式。 – 2012-04-16 21:44:38
@fullNelson那麼,如果你真的想要,可以隨意使用它:-p。與往常一樣upvotes /接受的答案是升值對SO手段:d – 2012-04-16 21:46:03