2017-05-04 88 views
3

需要一些正則表達式的幫助,所以我需要從字符串中提取票號「票#999999」..我如何使用正則表達式來做到這一點。preg_match_all()

我的當前正則表達式正在工作,如果我有超過一個號碼在票#9999 ..但如果我只有票#9它不工作請幫助。

當前正則表達式。

preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches); 

謝謝。

+0

這是可能的,可以提供更好/更高效的答案,但我們不會知道,直到你提供完整的輸入字符串。我們知道您的輸入字符串可以是'Ticket#9',但是當您有多個票證子字符串需要捕獲時,我們不知道您的輸入字符串是什麼樣子。請編輯您的問題以澄清您的問題。 – mickmackusa

回答

3

在您的模式[0-9]匹配1個數字,\w匹配另一個數字,\d+匹配1+數字,因此需要#後面的3位數字。

使用

preg_match_all('/Ticket#([0-9]+)/i',$data,$matches); 

這將匹配:

  • Ticket# - 一個字符串Ticket#
  • ([0-9]+) - 第1組捕獲1個或多個數字。

PHP demo

$data = "Ticket#999999 ticket#9"; 
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches, PREG_SET_ORDER); 
print_r($matches); 

輸出:

Array 
(
    [0] => Array 
     (
      [0] => Ticket#999999 
      [1] => 999999 
     ) 

    [1] => Array 
     (
      [0] => ticket#9 
      [1] => 9 
     ) 

)