2009-04-11 2 views

답변

16

테스트 :

/@([a-z0-9_]+)/i 
루비 (IRB) 중

: 파이썬

>> "RT @user1: who are @thing and @user2?".scan(/@([a-z0-9_]+)/i) 
=> [["user1"], ["thing"], ["user2"]] 

: PHP에서

>>> import re 
>>> re.findall("@([a-z0-9_]+)", "RT @user1: who are @thing and @user2?", re.I) 
['user1', 'thing', 'user2'] 

:

01,231,582,193 426,913,
+0

당신은 [A-z0-9_], 즉 @ ([A-ZA-Z0-9 _] +)의 주위에 –

+0

감사를 캡처 그룹을 추가해야합니다, 잘 작동합니다! 마지막 질문 하나 : "@"앞에 공백이 있어야하거나 시작 부분에 있어야하는 경우 다음 표현식을 사용할 수 있습니까? "/ (| ^) @ ([a-z0-9 _] +)/i" – caw

+0

lookbehind 사용 - http://www.regular-expressions.info/lookaround.html – user4812

0

이 그렇게한다 (편의상 I라는 사용 캡처).?

+ @ (? [A-ZA-Z0-9 _] +)? [^ @] + @ ([^ \ S] +)^@] + @ ([A-ZA-Z0-9 _] +)

+0

PHP는 표현식을 사용할 때 오류 메시지를 표시합니다. "구분 기호 누락"과 같은 것입니다. – caw

1

이 정규식 반복자 (findall은) 시도 :?

(@[\w-]+) 

작별

+0

간단 ... 좋은! scan (ruby)와 결합하여 배열을 찾습니다. text.scan (/ @ [\ w -] + /) – Danny

2
/(?<!\w)@(\w+)/ 

위의 시나리오에는 다음과 같은 시나리오가 있습니다. 이 글의 do not :

  • @ 기호는 사용자 이름이 아니기로되어 있습니다. "내 이메일은 [email protected]"입니다.
  • 문자열 시작 부분에있는 사용자 이름을 허용합니다. "@username 로렘 입숨는 ..."
+0

고마워요. 아무도 이메일 주소 문제를 고려하지 않습니다. – innonate

0

좋은 생각이 트위터 텍스트 라이브러리 [1] 프로젝트에서이 텍스트의 문제를 해결하기 위해 포함입니다.

twttr.txt.extractMentions("a very generic twitt with some @mention"); 

[1] https://github.com/twitter/twitter-text-js

관련 문제