[英]Capture a single match only - Regex
我只想通過表達式捕獲第一個匹配項
<p>.*?</p>
我已經嘗試過<p>.*?</p>{1}
但無法正常工作,它會返回html文檔中的所有p標簽,請提供幫助
看起來您正在使用一種方法,該方法會在給定正則表達式的情況下返回字符串中的每個匹配項,在這種情況下,您需要將正則表達式錨定在字符串的開頭,因此它不會返回所有匹配項,而只會返回第一個匹配項:
^.*?<p>.*?</p>
使用括號捕獲要捕獲的內容。
PS:這是標准的“避免使用正則表達式解析HTML,使用適當的HTML解析器”的建議。 對於嵌套的<p>
部分,此簡單的正則表達式將失敗 (我不記得它是否在HTML中有效,但是即使它們不是無效的,您仍然可以得到它們)。
Regex.Match
方法默認情況下會執行此操作,並且正則表達式正確。
Regex regex = new Regex("<p>(.*?)</p>");
Match match = regex.Match("<p>1</p><p>2</p>");
Console.WriteLine("{0}", match.Value);
運行該程序將打印1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.