簡體   English   中英

正則表達式匹配* *不匹配非英語字符的文本

[英]regex match with * not matching text with non-English characters

我正在嘗試刮擦上面帶有希伯來語文本的頁面。 它包含以下HTML:

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

我只想要12+部分(實際上:我只想要'12'部分)。 我目前正在使用其他語言的正則表達式:

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

但是我無法與之匹敵。 我嘗試了所有的正則表達式選項,如RightToLeft,CultureInvariant,SingleLine,MultiLine等,但沒有任何效果。 它確實可以與許多其他語言一起工作。

注意:我知道HtmlAgilityPack可以正確解析HTML 這是關於為什么看似正確的RegEx無法匹配特定字符串的問題(因為我目前有這個示例)。

這個正則表達式對我有用:

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

這將返回12 我加了一個? .*以使點不貪心。

我認為讓您失望的是加號后有隱藏字符(也許是希伯來字符?)。 以下內容也適用於您的字符串(請注意加號后面的點,該點可容納您的隱藏字符):

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

您還需要? 如前所述,在.*之后是為了防止正則表達式返回2而不是12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM