使用min和max运算符时,C#RegEx不能正常工作

时间:2016-05-17 19:32:52

标签: c# regex

所以我正在研究一些必须正则表达一些东西的代码。 一般来说,它的工作除了一个正则表达式,它在第一场比赛中返回很多东西,但之后在其他所有比赛中按预期工作。

我使用regex101.com构建正则表达式,它看起来像这样:

>(?<ev>[0-9]{1,3}\s(HP|Atk|Def|SpD|SpA|Spe))<

c#中的代码如下所示:

pattern = ">(?<ev>^[0-9]+${1,3}\\s(HP|Atk|Def|SpD|SpA|Spe))<";
foreach (Match match in Regex.Matches(html, pattern))
{
    Console.WriteLine(match.Groups["ev"].Captures[0].Value);
}

html im regexing就是这样:http://pokedex.project-sato.net/files/localfile.html

我也测试过并且不起作用的示例:http://pastebin.com/6H0QnFBP

控制台中的输出为空。

编辑:

输出应如下所示:

4 Def
252 SpA
252 Spe

1 个答案:

答案 0 :(得分:2)

尝试调整您的第一个匹配组,因为您当前拥有HP,这将匹配一个或多个数字,三次。

您可能需要1-3位数字以及您的某个属性(例如Atk// This will match 1-3 digits followed by one of your properties pattern = ">(?<ev>\d{1,3}\\s(HP|Atk|Def|SpD|SpA|Spe))\<"); 等),这些属性将使用以下表达式:

^

这也删除了$onDowngrade()的开头和约束,因为这些值可能会在整个输入中找到,因此您不希望将其限制为单行。

示例

enter image description here

你可以see an example of this that uses a snippet of your targeted HTML file as input here