2

我正在尝试抓取包含希伯来语文本的页面。它包含以下 HTML:

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

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

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

但我就是无法让这个匹配。我尝试了所有的正则表达式选项,如 RightToLeft、CultureInvariant、SingleLine、MultiLine 等,但没有任何效果。不过,它确实适用于许多其他语言。

注意:我知道 HtmlAgilityPack 可以正确解析 HTML。这是关于为什么看似正确的 RegEx 无法匹配特定字符串的问题(因为这是我目前拥有的示例)。

4

1 回答 1

4

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

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

这返回12。我添加了一个?to.*使点不贪心。

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

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

如上所述,您还需要?after以防止正则表达式返回而不是..*212

于 2013-02-24T02:41:27.663 回答