Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Asp.net 正则表达式:仅捕获具有X-XXXXX-XXXXX模式的数字(跳过不需要的字符)?_Asp.net_Regex_Pattern Matching - Fatal编程技术网

Asp.net 正则表达式:仅捕获具有X-XXXXX-XXXXX模式的数字(跳过不需要的字符)?

Asp.net 正则表达式:仅捕获具有X-XXXXX-XXXXX模式的数字(跳过不需要的字符)?,asp.net,regex,pattern-matching,Asp.net,Regex,Pattern Matching,我有许多0-12345-67890,我想在命名的捕获组中捕获0123456789。我走了这么远: @"(?<upc>\d-\d{5}-\d{5})" “(?\d-\d{5}-\d{5})” 它按原样捕获字符串。如何在将数字作为单个命名组抓取时跳过破折号?顺便说一句,这是ASP.NET正则表达式。我不相信你能用一个正则表达式匹配一个反向引用来实现这一点。要么匹配破折号,要么不匹配(并且不捕获任何内容) 捕获数字后,您必须使用Replace()手动删除它们: var number =

我有许多
0-12345-67890
,我想在命名的捕获组中捕获
0123456789
。我走了这么远:

@"(?<upc>\d-\d{5}-\d{5})"
“(?\d-\d{5}-\d{5})”
它按原样捕获字符串。如何在将数字作为单个命名组抓取时跳过破折号?顺便说一句,这是ASP.NET正则表达式。

我不相信你能用一个正则表达式匹配一个反向引用来实现这一点。要么匹配破折号,要么不匹配(并且不捕获任何内容)

捕获数字后,您必须使用
Replace()
手动删除它们:

var number = m.Groups["upc"].Replace("-", "");

我不相信你可以用一个正则表达式匹配一个反向引用来实现这一点。要么匹配破折号,要么不匹配(并且不捕获任何内容)

捕获数字后,您必须使用
Replace()
手动删除它们:

var number = m.Groups["upc"].Replace("-", "");

你没有。您可以在3个组中捕获并将它们连接到单个字符串中,或者执行搜索并替换以除去单个命名组中的破折号

你没有。您可以在3个组中捕获并将它们连接到单个字符串中,或者执行搜索并替换以除去单个命名组中的破折号

太棒了。我认为从1234.56美元中提取1234.56美元是很常见的。这是可能的,只是不要在匹配中包含“$”。在您的情况下,您的匹配有'-'分隔它的组件…替换或连接将是唯一的方法。每个正则表达式匹配都是连续的子字符串。您要求跳过连续子字符串中的字符,但仍然将其作为匹配项显示。是的,这里的关键字是“连续”。这太神奇了。我认为从1234.56美元中提取1234.56美元是很常见的。这是可能的,只是不要在匹配中包含“$”。在您的情况下,您的匹配有'-'分隔它的组件…替换或连接将是唯一的方法。每个正则表达式匹配都是连续的子字符串。您要求跳过连续子字符串中的字符,但仍然将其作为匹配项显示。是的,这里的关键字是“continuous”。