2012-03-14 68 views
0

我有以下代碼:如果我指定`startat`,我可以匹配一個子串的開頭嗎?

var regex = new Regex(@"^\d+\b"); 
Console.WriteLine(regex.IsMatch("x 10", 2));   // False 
Console.WriteLine(regex.IsMatch("x 10".Substring(2))); // True 

有沒有在我的模式來使用之外^,可以讓我指定startat參數,仍然得到相同的結果,服用相當於串一個角色?換句話說,即使它不一定是我傳入的字符串的開始,我是否可以匹配正在測試的子字符串的開頭?我將沿着字符串移動正則表達式,所以我不想創建大量的子字符串,也不能將其硬編碼到我的模式中。

+1

'.IsMatch(String,Int32)'返回false似乎很奇怪...... – ephemient 2012-03-14 06:12:14

+0

@ ephemient-這就是我的想法。 – dlras2 2012-03-14 06:22:03

回答

1

Try \G,如:

var regex = new Regex(@"\G\d+\b"); 
Console.WriteLine(regex.IsMatch("x 10", 2)); 

\G在其中先前的比賽結束點匹配(或之前不匹配字符串的開始)。

+0

這正是我想要的,謝謝! http://www.regular-expressions.info對此失敗了。 – dlras2 2012-03-14 17:02:40

-1

var regex = new Regex(@「\ w \ t \ d + \ b」);

+0

對不起,我的問題含糊不清。我重新編寫了它。 (注意'\ t'匹配一個製表符,而不是空格。) – dlras2 2012-03-14 05:00:22

+0

嘗試 var regex = new Regex(@「[\ w] * \ d + \ b」); – 2012-03-14 05:03:24

+0

我想確保我的模式是在我指定的任何起始位置匹配的第一件事。你對我的具體例子太過擔心了。 – dlras2 2012-03-14 05:06:22

相關問題