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”。