2014-01-25 38 views
-1
$string = "anyWord Hello A 1 *** ."; 
preg_match('/(.*?) Hello (A|B) (1|0) (if(g2 == B)then|else).*/i',$string,$match); 
//    g1   g2 g3 -->|    
print_r($match); 

我該怎麼辦?正則表達式我怎麼寫這個模式?

+0

什麼是'(?(3))'?你認爲它在做什麼? –

+0

我認爲得到組3的價值,並在條件檢查此值 –

+0

據我所知,這不是任何*正則表達式的特徵,我不知道你可能從哪裏得到這個概念... –

回答

0

嘗試這種情況:

preg_match("/(.*?) Hello ([AB]) (?|(0)|(1) (\*\*\*))/i",$string,$match); 

(?|...|...)結構允許在交替的子模式將被編號爲彼此獨立。否則,你最終會與比賽3或者是0或者什麼也不是,並且匹配4/51/***或者什麼都不是。該結構將它們結合在一起,拿到賽301,並匹配4是什麼或***

+0

謝謝你,但是這沒有解決我的問題! –

+0

...那你的問題是什麼?我的答案以什麼方式無法解決? –

+0

整體我想在我的情況下使用一個組的值 –