我正在试图抓取一个上面有希伯来文字的页面。它包含以下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无法匹配特定字符串的问题(因为这是我目前的样本)。
答案 0 :(得分:4)
这个正则表达式对我有用:
<div id="AgeRating">.*?(\d{1,2})\+
返回12
。我向?
添加了.*
以使点不贪婪。
我认为让你失望的是你在加号后面有一个隐藏的角色(也许是一个希伯来字符?)。以下内容也适用于您的字符串(注意加号后面的点,它可以容纳您的隐藏字符):
<div id="AgeRating">.*?(\d{1,2})\+.</div>
如上所述,您还需要?
之后的.*
,以防止正则表达式返回2
而不是12
。