2015-04-12 54 views
1

这个正则表达式是用.Net正则表达式类编写的。排除子串匹配

所以我有这个字符串:

<div style="text-align:center;font-size: 18px;"><span style="font-size:14px;">11th of April 2015</span> 18:10</div> 

我有这样的正则表达式代码:

[0-9]{1,2}(st|nd|rd|th) of \w{3,9} \d{4}<\/span> \d{1,2}:\d{1,2} 

此代码返回本场比赛:

11th of April 2015</span> 18:10 

是否与正则表达式的可能性排除

(st|nd|rd|th) of 

</span> 

从匹配,使它看起来像这样:

11 April 2015 18:10 

我曾尝试与积极的回顾后,但我没有得到它的工作。

+0

使用HTML解析器呢? – hjpotter92

+0

是你正在使用的JavaScript? –

+0

不,我正在使用C#正则表达式 – Encore

回答

3

您可以使用您想和您不希望子串none capturing各组分组:

(\d+)(?:st|nd|rd|th) [a-zA-Z]+ ([a-zA-Z]+) (\d+)<\/span>\s?(\d+:\d+)<\/div> 

Demo

+0

这会导致捕获'11','April','2015'。在OP中,据说'2015年4月11日18:10'必须是最终结果。 –

+0

@stribizhev是的!固定!感谢关注! – Kasramvd

0

您可以匹配您需要的字符串部分,然后合并捕获组,例如:

var regex34 = new Regex(@"([0-9]{1,2})(?:(?:st|nd|rd|th) of)(\w{3,9} \d{4})<\/span>(\d{1,2}:\d{1,2})"); 
var input34 = "<div style=\"text-align:center;font-size: 18px;\"><span style=\"font-size:14px;\">11th of April 2015</span> 18:10</div>"; 
var result = regex34.Match(input34); 
var final = result.Groups[1].Value + result.Groups[2].Value + result.Groups[3].Value; 

输出:

enter image description here

+0

@Encore:我首先在VS2012中给出了正确的答案。 –

+0

感谢您的回答,但我已经拥有了C#代码,并且只需要由Kasra首次提供的新正则表达式。抱歉! – Encore

+0

@Encore:但它是一个错误的正则表达式,不是吗? –