我是C#.NET中使用Regexs的新手。说我有一个字符串如下......
"Working on log #4"
在这个字符串中我们可以看到数字(4)变化。如何使用正则表达式从字符串中仅提取该数字。
我想确保字符串与第一部分匹配:
"Working on log #"
然后从中提取整数。
另外 - 我知道我可以使用string.Split()或.Substring等来完成此操作。我只是想知道如何使用正则表达式来执行此操作。
谢谢!
答案 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)