从匹配中排除子串

Exclude Substring from Match

此正则表达式是使用 .Net 正则表达式编写的 Class。

所以我有这个字符串:

<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}

此代码 return 此匹配项:

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

正则表达式是否有可能排除

(st|nd|rd|th) of 

</span>

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

11 April 2015 18:10

我已经尝试过积极的回顾,但我没有让它发挥作用。

您可以使用 non-capture group(?:...)

您可以对想要的子字符串使用分组,对不需要的组使用 none capturing

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

Demo

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

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;

输出: