2015-04-12 94 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:但它是一個錯誤的正則表達式,不是嗎? –