正则表达式匹配*与非英文字符不匹配的文本

时间:2013-02-24 02:18:29

标签: c# regex

我正在试图抓取一个上面有希伯来文字的页面。它包含以下HTML:

<div id="AgeRating">דירוג גיל: ‎12+‎</div>

我只想要12+部分(事实上:我只想要'12'部分)。我目前正在使用这段正则表达式用于其他语言:

new Regex(@"<div id=""AgeRating"">.*(\d{1,2})\+</div>", RegexOptions.Compiled);

但我不能让这个匹配。我尝试了所有正则表达式选项,如RightToLeft,CultureInvariant,SingleLine,MultiLine等,但没有任何作用。它可以用很多其他语言工作。

注意:我知道HtmlAgilityPack正确parsing of HTML。这是为什么看似正确的RegEx无法匹配特定字符串的问题(因为这是我目前的样本)。

1 个答案:

答案 0 :(得分:4)

这个正则表达式对我有用:

<div id="AgeRating">.*?(\d{1,2})\+

返回12。我向?添加了.*以使点不贪婪。

我认为让你失望的是你在加号后面有一个隐藏的角色(也许是一个希伯来字符?)。以下内容也适用于您的字符串(注意加号后面的点,它可以容纳您的隐藏字符):

<div id="AgeRating">.*?(\d{1,2})\+.</div>

如上所述,您还需要?之后的.*,以防止正则表达式返回2而不是12