.NET Regex - 包含更改编号的特定字符串

时间:2014-01-09 18:53:29

标签: c# .net regex string

我是C#.NET中使用Regexs的新手。说我有一个字符串如下......

"Working on log #4"

在这个字符串中我们可以看到数字(4)变化。如何使用正则表达式从字符串中仅提取该数字。

我想确保字符串与第一部分匹配:

"Working on log #"

然后从中提取整数。

另外 - 我知道我可以使用string.Split()或.Substring等来完成此操作。我只是想知道如何使用正则表达式来执行此操作。

谢谢!

4 个答案:

答案 0 :(得分:3)

"Working on log #(\d+)"

()创建一个匹配组,因此您可以提取该部分 \d匹配任何数字 +表示“查看上一个令牌,将其匹配一次或多次”,这样它就会匹配一个或多个数字。

总的来说,你正在捕捉一个包含一个或多个数字的组,其中该组位于"Working on log #"之后

答案 1 :(得分:2)

RegEx rgx = new RegEx("Working on log #[0-9]");是您要使用的模式。第一部分是字符串文字,[0-9]表示该字符可以是0到9之间的任何值。如果允许多个数字,则将其更改为[0-9]{x},其中x是重复次数或[0-9]+作为+后任意字符表示允许该字符中的一个或多个。

你也可以string.StartsWith("Working on log #")然后分开#并使用int.TryParse()和第二个值来确认它实际上是一个有效的整数。

答案 2 :(得分:1)

试试这个:^(?<=Working on log #)\d+$。这只捕获了数字。不需要捕获组。如果这是一个更大的字符串,请删除^$

  • ^ - 字符串开头
  • (?<=) - 积极的观察 - 确保在找到=)之间的内容
  • \d+ - 至少一位数
  • $ - 字符串结尾

答案 3 :(得分:0)

捕获组是解决方案:

"Working on log #(?<Number>[0-9]+)"

然后,您可以使用Match.Groups属性访问匹配的组。