문제

트위터의 모든 RT 시나리오와 일치하는 올바른 정규 표현식을 찾으려고 노력하고 있습니다 (Twitter의 새로운 리트 윗 API를 기다릴 수 없음). 내가 보는 방식은 트위터에서 돌아온 문자열의 시작, 중간 또는 끝에있을 수 있습니다. 따라서이 정규 표현의 시작과 끝에 무언가가 필요합니다.

([rr]) ([tt])

내가 무엇을 시도하든 모든 시나리오를 하나의 정규 표현으로 일치시킬 수는 없습니다.
나는 시도했다

^| s+

문자열의 시작 부분이나 하나 이상의 공백 문자 후에 RT가 나타나는 시나리오와 일치하지만 문자열 또는 RT의 끝에 동일하게 작동하지 않았습니다.
나는 시도했다

s+| $

문자열 끝에 RT가 나타나거나 'pre'와 마찬가지로 한 번 이상의 공백 문자가있는 경우에 맞는 경우가 작동하지 않았습니다.

누군가 내가 여기서 내가 뭘 잘못하고 있는지 설명해 주시겠습니까? 모든 도움이나 제안은 크게 높이 평가됩니다 (항상 그렇듯이 :))

도움이 되었습니까?

해결책

당신은 아마도 다음과 같은 것과 함께 가장 행복 할 것입니다.

/\brt\b/i

고립 된 인스턴스를 찾을 수 있습니다 RT (즉, 단어 바탕에 둘러싸여 있음) /i 정규식 끝에 수정자를 수정하여 케이스에 민감하게 만듭니다.

"예술"과 "쿼츠"와 같은 단어가 포함 된 임의의 트윗을 실제로 생각하지 않도록 단어 경계를 원합니다. 그럼에도 불구하고, 그것은 잘못된 긍정을 가질 것입니다.

기본적으로 정규 표현식은 문자열 내부의 어느 곳에서나 일치 할 수 있으므로 실제로 무엇이 있는지 또는 존재하는지 신경 쓰지 않으면 경기에 앞서 또는 따를 수있는 것을 설명 할 필요가 없습니다.

다른 팁

if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top