簡體   English   中英

正則表達式反向引用非捕獲組?

[英]Regular expression backreference non-capturing group?

反對像這樣的字符串:

<h3>title</h3>
<h4>title</h4>

如何相應匹配標簽並獲取文本?

這有效,但它不必要地獲取標簽名稱:

'@<(h[34])>(.+)</\1>@sU'

但是這似乎不起作用,因為我不想獲取標記名稱,只是想反向引用它:

'@<(?:h[34])>(.+)</\1>@sU'

我正在使用PHP preg_match()。 為什么第二種方法不起作用? 是否可以返回引用非捕獲組?

捕獲組可以在以后的正則表達式中用作對該捕獲組中匹配的內容的反向引用。 通過放置?: inside指定不捕獲組,而是指定組表達式。

您可以使用分支重置功能(?| ... | ... ) ,使您的表達式不匹配非對應標記,並且備選方案中的兩個捕獲組都被視為一個捕獲組。

~(?|<h3>(.+?)</h3>|<h4>(.+?)</h4>)~s

現場演示

暫無
暫無

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

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