1

像这样的正则表达式:

/<span[^>]*class=\"link[^>]*params=\"(\d+),(\d+),[^>]*>[^<]*from.*?(\d{1,2})(.*?)(\d{4}).*?(year|Year)[^<]*<\/span>/

像这样的字符串:

<p id="p_195" class="s_16" style="text-indent:6pt;"><span class="link s_8" params="65537,21403229,0,195,0,0" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';" onclick="return onClickLink(event, this);">Sometext from 28&nbsp;september 2013& nbsp;year</span></p>

问题在于&nbsp;september. &nbsp;可以有空格或&nbsp;. 我将正则表达式更改为:bla-bla-blah... from.*?(\d{1,2})**(& nbsp;|\s)**(.*?)(\d{4}).*?(year|Year) ...bla-bla-blah

( 没有空格)

所以,在比赛中我有一个(&nbsp;|\s). 但我在那里不需要他们!如何分组(&nbsp;|\s)而不让他们参加比赛?

4

1 回答 1

1

你想要一个非捕获组,试试这个:

?(\d{1,2})(?: |\s)(.?)(\d{4}).*?(年|年)

有关详细信息,请参阅 Kobi 对 OP 的评论。什么是非捕获组?问号后跟冒号 (?:) 是什么意思?

小心非捕获组。并非所有正则表达式都支持它们,如果您依赖组反向引用索引并突然决定将组更改为非捕获,它们可能会弄乱您的后处理代码。我的建议是始终在 .Net 中使用命名组。

于 2013-09-30T11:08:12.563 回答