从匹配中排除子串

时间:2015-04-12 20:12:42

标签: regex string match

此正则表达式使用.Net Regex类编写。

所以我有这个字符串:

<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

Regex是否有可能排除

(st|nd|rd|th) of 

</span>
匹配中的

使其看起来像这样:

11 April 2015 18:10

我尝试过积极的外观,但我没有让它发挥作用。

3 个答案:

答案 0 :(得分:3)

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

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

Demo

答案 1 :(得分:0)

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

答案 2 :(得分: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