정기적 인 표현과 PHP로 트위터 RT를 찾으려고
-
13-09-2019 - |
문제
트위터의 모든 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";