我如何使用REGEX忽略某些东西

时间:2017-01-02 00:01:37

标签: c# regex

我试图忽略我的正则表达式中的一些很少发生的文本。我的正则表达式是

var Runners = new Regex(@"(?<=y, |f, |m, )(.*?)(?= runners\))").Matches(set);

有问题的行是

    Anthony Mildmay, Peter Cazalet Memorial Handicap Chase (Sponsored By Ing Barings) <span class=aside>3m 5f 110y</span></h2><ul class=list><li>(5yo+, 3m 5f 110y, 16 runners)

还有一个额外的&#39; y,&#39;在开头所以它收集了太多的数据,就像在这个例子中我想要的只是我的正则表达式找到&#39; 16&#39;。

我不认为这种情况经常发生,但是在216424的记录134中出现此错误。是否有一种方法可能只是在跑步者后面寻找10个空格来寻找&#39; y,&#39;或者&#39; f,&#39;或者&#39; m,&#39;?或者找一个数字,然后是&#39; y,&#39;或者&#39; f,&#39;或者&#39; m,&#39;?

2 个答案:

答案 0 :(得分:1)

这可能对您有用:

(?<=[yfm],\s*)\d+(?=\s*runners\))

使用.*始终是“危险的”(因为它可能匹配与预期不同的东西),即使它不是贪婪的。尽量使您的模式尽可能具体,以获得正确的匹配。

答案 1 :(得分:0)

https://regex101.com/

使用Lucero的示例适用于您的字符串。只有你必须删除的是\ s中的'*'(似乎抛出模式错误)。

(?<=[yfm],\s)\d+(?=\s*runners\))

将你的字符串放在regex101中并使用该表达式,它找到16。