2012-05-21 4 views
1

다양한 정보를 가진 다양한 문자열이 있지만 모두 공통된 특성을 공유합니다. 바로 뒤에 대괄호가있는 요청자의 사용자 이름이 있습니다. 뭔가 같이 : "/(?P<user>\w+)\s\[\d\d\]/"하지만이 단지 작품을 문자열은 사용자로 시작하면, 같은 : "... paul [55] ..." 내가 바로 이쪽 [dd]

전에 단어를 추출 할 수있는 정규식을 작성하는 시도하고 내가 지금까지 무엇을 가지고 "paul [55] has logged in"하지만이 경우에는 작동하지 않습니다. "user paul [55] has logged off"

무엇이 누락 되었습니까? positive lookahead assertion를 사용대괄호 바로 전에 단어를 가져 오는 정규식

+0

정규식과 일치/할당을 수행하는 데 사용하는 PHP 코드의 스 니펫을 포함해야 할 수도 있습니다. –

+0

사용자 폴이 일치하지 않습니다 [55] 로그 아웃했습니다 " – zerkms

+0

"폴이 [55] 로그인되었습니다 "와"사용자 폴이 로그 오프했습니다 " –

답변

3

봅니다 :

(\w+)(?=\s?\[\d\d\]) 

이 표현은이 옵션 공간과 대괄호로 묶인 두 자리 진수 다음에 경우에만 하나 이상의 단어 문자와 일치합니다.

+0

완벽! 내 원래 코드보다 훨씬 더 깨끗합니다. –

관련 문제