請有人幫助我,我會永遠讚賞。正則表達式找到字符串中的作業ID
我試圖創建一個正則表達式,從「你的任務797(」 JOB_NAME「)已提交」
或「您的工作9212(」 another_job_name「)已提交」等提取797 。
任何想法?多謝你們!
請有人幫助我,我會永遠讚賞。正則表達式找到字符串中的作業ID
我試圖創建一個正則表達式,從「你的任務797(」 JOB_NAME「)已提交」
或「您的工作9212(」 another_job_name「)已提交」等提取797 。
任何想法?多謝你們!
是否有拼搶數量的任何特殊條件?
要獲取第一個數字,只需使用/\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
做,但它是很好的提供替代方案。
如果字符串的其餘部分保證是相同的,簡單的\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.
優秀的答案,謝謝! :-) 出於興趣,我如何提取工作名稱? 太感謝你了:-) – Flukey 2010-05-28 12:34:53
@Jamie,看到我的更新(水平線以下)以及Amarghosh的。附:你從來沒有回答我的問題。使用 – salathe 2010-05-28 12:46:27
正則表達式/\(\"(.*?)\"\)/將匹配作業名 – Xetius 2010-05-28 12:48:32