亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個位置的正則表達式期望值取決于另一個位置的隨機值

一個位置的正則表達式期望值取決于另一個位置的隨機值

PHP
慕姐8265434 2021-12-24 15:17:57
我需要正則表達式來查找所有看起來像這樣的短代碼標簽對,[sc1-g-data]b[/sc1-g-data]但旁邊的數字sc可能會有所不同,但它們必須匹配。所以這樣的事情將不起作用,\[sc(.*?)\-((.|\n)*?)\[\/sc(.*?)\-因為這匹配了我不想要的不匹配的標簽對[sc1-g-data]b[/sc2-g-data]所以第二個標簽中的預期數字取決于第一個標簽中的隨機數
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

您可以使用正則表達式,如:

\[(sc\d*-[^\]\[]*)\]([\s\S]*?)\[\/\1\]

查看正則表達式演示

  • \[- 一個[字符

  • (sc\d*-[^\]\[]*)- 捕獲組 1: sc, 0+ 數字, -, 然后是除]and 之外的0+ 個字符[

  • \]- 一個]字符

  • ([\s\S]*?) - 捕獲組 2:任何 0+ 個字符,盡可能少

  • \[\/- 一個[/字符串

  • \1 - 存儲在第 1 組中的相同文本

  • \]- 一個]字符

請參閱正則表達式圖

http://img1.sycdn.imooc.com//61c575900001a55e09340194.jpg

PHP 演示:


$pattern = '~\[(sc\d*-[^][]*)](.*?)\[/\1]~s'; 

$string = '[sc1-g-data]a[/sc1-g-data] '; 

if (preg_match($pattern, $string, $matches)) {

  print_r($matches);

}

介意使用單引號字符串字面的,如果使用雙引號一個你需要使用\\1,不\1作為'\1'!="\1"在PHP。


輸出:


Array

(

    [0] => [sc1-g-data]a[/sc1-g-data]

    [1] => sc1-g-data

    [2] => a

)


查看完整回答
反對 回復 2021-12-24
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

如果您的標簽只是括號之間的任何內容,[blah][/blah]您可以使用:

\[(.*?)\].*?\[\/\1\]


查看完整回答
反對 回復 2021-12-24
  • 2 回答
  • 0 關注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號