2012-03-14 46 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

相关问题