Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET正则表达式-特定于字符串,其中包含更改的数字_C#_.net_Regex_String - Fatal编程技术网

C# .NET正则表达式-特定于字符串,其中包含更改的数字

C# .NET正则表达式-特定于字符串,其中包含更改的数字,c#,.net,regex,string,C#,.net,Regex,String,我刚开始在C#NET中使用regex。假设我有一个字符串如下 "Working on log #4" 在这个字符串中,我们可以看到数字(4)的变化。如何使用正则表达式从字符串中仅提取该数字 我要确保字符串与第一部分匹配: "Working on log #" 然后从中提取整数 另外,我知道我可以使用string.Split()或.Substring等来实现这一点。我只是想知道如何使用正则表达式来实现这一点 谢谢 RegEx rgx=新的RegEx(“处理日志#[0-9]”是您要使用的模式。第

我刚开始在C#NET中使用regex。假设我有一个字符串如下

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

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

"Working on log #"
然后从中提取整数

另外,我知道我可以使用string.Split()或.Substring等来实现这一点。我只是想知道如何使用正则表达式来实现这一点


谢谢

RegEx rgx=新的RegEx(“处理日志#[0-9]”是您要使用的模式。第一部分是字符串文字,[0-9]表示字符可以是0到9之间的任何值。如果允许多个数字,则将其更改为
[0-9]{x}
,其中
x
是重复次数,或者
[0-9]+
作为
+
在任何字符表示允许该字符中的一个或多个之后

您也可以只执行
string.StartsWith(“在日志上工作”)
,然后在
上拆分,并使用
int.TryParse()
和第二个值来确认它实际上是一个有效的整数。

试试这个:
^(?)?
()
创建一个匹配组,以便您能够提取该部分。
\d
匹配任何数字。
+
表示“查看前面的标记,匹配一次或多次”,因此它将使其匹配一个或多个数字


因此,总体而言,您捕获的是一个包含一个或多个数字的组,其中该组位于“处理日志”之后。

捕获组是解决方案:

"Working on log #(?<Number>[0-9]+)"
“处理日志(?[0-9]+)”

然后你可以使用属性访问匹配的组。

这不会在日志34中执行“.MordSKONE在我完成编辑之前是真的:”确实,考虑我的评论不再有效:A:就要提交提交这个了!所以\d会导致无法识别的转义序列,有什么想法吗?在C中,你必须转义
`,所以使用
\\d`。你很容易找到可能重复的转义序列……我浏览了教程,很难理解各种解释。我明白这很简单,我只是想看看别人会怎么解释。不过我很欣赏你的洞察力!
"Working on log #(?<Number>[0-9]+)"