簡體   English   中英

僅捕獲單個比賽-正則表達式

[英]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.

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