簡體   English   中英

正則表達式跳過嵌入式模式

[英]regex skip embedded patterns

我正在用php過濾一些文本。 我尋找類似的模式:

Mary [qtip:had|past tense of have] little lamb.

我從工具提示“ has的過去時”中提取了錨文本“ had”]

處理的一部分是使用正則表達式/\\[qtip:([^\\|\\\\]]+)\\|?([^\\\\]]*)?\\]/

這很好

我正在嘗試擴展功能。

Mary [qtip:had|past [otherFunction:tense|verb form signalling time] of have] little lamb.

我的思維簡單模式找到了"had""past [otherFunction:tense|verb form indicating time"

我想要一個將跳過嵌入的[]對的模式。 這些在錨或工具提示中是不允許的。

為什么你逃脫| 並雙重逃脫] 為了解決您的問題,只需禁止在模式中打開[ 這就要求模式要到達結尾處[ ]而不遇到任何嵌套的方括號。

preg_match_all('/\[qtip:([^|[\]]+)\|?([^[\]]*)\]/', $input, $matches);

我也刪除了最后一個? 因為如果在應該變為可選的模式上使用* ,則是多余的。

暫無
暫無

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

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