2010-05-28 29 views
0

請有人幫助我,我會永遠讚賞。正則表達式找到字符串中的作業ID

我試圖創建一個正則表達式,從「你的任務797(」 JOB_NAME「)已提交」

或「您的工作9212(」 another_job_name「)已提交」等提取797 。

任何想法?多謝你們!

回答

2

是否有拼搶數量的任何特殊條件?

要獲取第一個數字,只需使用/\d+/preg_match即可。

if (preg_match('/\d+/', $subject, $match)) { 
    $job_id = (int) $match[0]; 
} 

否則,您可以執行類似於以下搜索前綴爲「job」(不區分大小寫)的數字的內容。

if (preg_match('/job (\d+)/i', $subject, $match)) { 
    $job_id = (int) $match[1]; 
} 

(有此正則表達式更好alternatves,不過最好還是保持簡單在第一。)


另一種選擇是從正則表達式移開成更基本的解析的字符串:

sscanf($subject, 'Your Job %d ("%[^"]")', $job_id, $job_title); 
// use $job_id and $job_title however you like 

當然,也可能出現相似preg_match做,但它是很好的提供替代方案。

+0

優秀的答案,謝謝! :-) 出於興趣,我如何提取工作名稱? 太感謝你了:-) – Flukey 2010-05-28 12:34:53

+0

@Jamie,看到我的更新(水平線以下)以及Amarghosh的。附:你從來沒有回答我的問題。使用 – salathe 2010-05-28 12:46:27

+0

正則表達式/\(\"(.*?)\"\)/將匹配作業名 – Xetius 2010-05-28 12:48:32

2

如果字符串的其餘部分保證是相同的,簡單的\d+就足夠了。

否則,請使用Your job (\d+)並讀取第一個捕獲的組。

preg_match("/Your job (\d+)/", $str, $matches); 
echo $matches[1]; //prints the id. 

編輯:修改爲獲取作業名

preg_match("/Your job (\d+) \("(.+?)"\)/", $str, $matches); 
echo $matches[1]; //prints the id. 
echo $matches[2]; //prints the job name. 
相關問題