2011-02-04 73 views
4

我正尝试使用正则表达式来获取字符后的值。在这种情况下,字符串是m325,我需要得到m之后的任何内容。字符后的正则表达式

有人可以告诉我我的代码有什么问题吗?

Regex rgMeter = new Regex("m(.+$"); 
intMeterID = Convert.ToInt32(rgMeter.Match(strID)); 

更新:

感谢您的答案......因为某些原因正则表达式“M(+)$”正在恢复m个,以及我需要的字符串。我已经尝试了组示例,它会返回我想要的数据。为什么我需要使用群组来执行此操作?

+0

您可以向我们展示完整的字符串..他们是在同一行或不同行 – 2011-02-04 09:45:12

回答

5
从丢失 )

除此之外,你过于简单化了一点。你需要做的

Regex rgMeter = new Regex("m(.+)$"); 
intMeterID = Convert.ToInt32(rgMeter.Match(strID).Groups[1].Value); 

(可能的话,你可能要添加一个检查,如果Match()匹配与否。)

1

“M(+)$” - 有没有关闭(

1

您所需要的正则表达式是/^m(.*)$/

其实你应该使用\d[0-9]如果你想匹配的数字。

/^m([0-9]*)$/ 

/^m([0-9]{3})$/ 

如果总是有3位

0

一个简单的“M \ d *”应该这样做..请告诉我们整串看到的情况。

2

你错过了一个结束)。另外,如果你正在提取一个数字,你应该只限于数字,避免在下一个语句中尝试将错误的字符串解析为整数。

m(\d*) 
1

此外,您还可以测试它:http://gskinner.com/RegExr/

会出现什么样的价值观背后的 “M” 字? 如果它只是一个整数,则应该使用Shekhar_Pro提供的解决方案.. 如果任何字符,去休息:)