2010-05-28 4 views
0

제발 누군가 도와 주시면 영원히 감사하겠습니다. 문자열에서 작업 ID를 찾을 수있는 정규 표현식

나는 "당신의 임무는 797 ("작업 이름은 ")

또는"귀하의 작업이 9212 ("another_job_name"가) 제출되었습니다 "등 제출되었습니다"에서 797를 추출하는 정규 표현식을 만들려고 해요

아이디어가 있으십니까? 고마워요!

답변

2

를 얻기 위해 수정 된 수를 잡아에 대한 특별한 조건이 있습니까?

첫 번째 숫자를 가져 오려면 /\d+/preg_match으로 사용하십시오.

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

그렇지 않으면 "작업"(대소 문자를 구분하지 않음)이 앞에있는 번호를 검색하는 다음과 같이 할 수 있습니다.

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

+0

@Jamie, 내 업데이트 (수평 규칙 아래) 및 Amarghosh 's를 참조하십시오. 추신 너는 내 질문에 결코 대답하지 않았다. – salathe

+0

regex /\(\"()*.)\"\)/을 사용하면 작업 이름 – Xetius

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.