정규식에서 한글을 포함한 문자열을 찾을때 어떻게 해야 하나요?

bumworld의 이미지

@\w*\b
위와 같은 정규식으로 @가 붙은 문자열은 찾았습니다.
그런데 문자열에 한글이 들어간것도 같이 찾을려고 하는데요.

@ini 날씨 환율 운세 문자 TV편성표 @곰돌이
생활더위 꺾인다.. @bumworld 하루종일 흐릴 듯

위와 같은 문자열이 있을시에 @ini @곰돌이 @bumworld 새개를 모두 뽑을려고 합니다.

지금 @\w*\b로는 @yohjini @ @bumworld 이렇게 밖에 안나옵니다.

그리고 혹시 새개의 문자열을 뽑을때 @만 제거해서 아이디만 추출할수 있을까요?

shint의 이미지

^@ 요렇게 쓰면 그외에 것.이라고 하지 않나요?
저라면 그냥 그거 먼저 지우고 재처리 하겠습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

raymundo의 이미지

무슨 언어로 하시는지...

Perl 의 경우 "스트링" 상태에서는 한글도 잘 잡아줍니다.

use utf8;  # 소스코드 내에 UTF-8 스트링 사용
binmode STDOUT, ":encoding(cp949)";   # 명령 프롬프트 창이 cp949라서 출력을 컨버트
 
my $str = q|
@ini 날씨 환율 운세 문자 TV편성표 @곰돌이
생활더위 꺾인다.. @bumworld 하루종일 흐릴 듯
|;
 
while ( $str =~ /\@(\w*)\b/g ) {
    print "match = [$&]\n";
    print "id    = [$1]\n";
}

match = [@ini]
id    = [ini]
match = [@곰돌이]
id    = [곰돌이]
match = [@bumworld]
id    = [bumworld]

좋은 하루 되세요!

biiiiid의 이미지

twitter 스타일의 아이디를 걸러내시려고 하는 것 같은데,
@\S+\s
정도로 하면 비슷하게 되지 않을까요?

\s 는 white space, \S는 non white space 라고 생각하고 쓴건데,
맞는지는 확인해보세요.

아이디만 걸러내는 부분은 zero-width match를 활용하면 되고요.

cleansugar의 이미지

ㄱ~힇 추가

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

bumworld의 이미지

@\S+\s 로 하니까 잘 나오네요..^^

그런데 zero-width는 어떻게 사용해야 하는지요?

biiiiid의 이미지


(?<=@)\S+\s 정도면 되겠네요..

사용하는 환경에 따라 지원이 안되거나, 문법이 다를 수도 있습니다.
Zero-width positive lookbehind 로 찾아보시면 됩니다.