테스트 사이트 - 개발 중인 베타 버전입니다

[정규식] 재미난? 정규식 Again #5 - Look-ahead and Look-behind

· 5년 전 · 1931 · 9

https://sir.kr/cm_free/1561502 에도 올렸었던 것인데

 

여기에 문제로 정리해 봅니다.

 

------------------

#hashtag #hash_tag #hashTag #Hashtag #Hash_Tag
#해시태그 #해시_태그 [:#해시_태그_입니다 #hash0tag:]{:.intro#test}
#这是一个标签 #ハッシュタグです

[:안녕하세요 입니다:]{:.intro}[:테스트입니다.:]{:#test#tes01#test02}{:.intro}

------------------

 

해시태그만 골라내는 정규식입니다. 옵션은 /g

해시태그에 유니코드(한국어, 중국어, 일본어등 지원), 보통 언더바만 지원..

단 {: }안에 있는 #은 태그가 아니고 CSS의 ID이므로 빼고 선택하는 정규식이 필요합니다.

 

800588803_1596300144.7722.png

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 9개

#[\S,_]{1,}
CSS의 ID를 빼는건 모르겠어요 ㅡㅡ;;
@만수킴 우선 #으로 시작하는 것이라도 찾아 보세요. 이 정규식은
#hash0tag:]{:.intro#test}
이것도 통으로 잡고 있습니다.
@마젠토 글쿤여~ ㅎ
#[\S_][^\s:#}]+
아하하... CSS의 ID는 정말 몰겠군요 ㅋ
@만수킴 #test#tes01#test02 이 부분이 통으로 잡힙니다.
\s 가 space, tab, line feed, carriage return, vertical tab, form feed 를 나타내고
\S 위의 것을 제외한 모든 글자인데. 가능하면 해시태그 기준인 영어(또는 유니코드), 숫자, 언더바만 들어가게 #!@$%^& 이런 해시태그는 없을 것 같습니다.
@마젠토 정답은 다른 분에게 ^^ 아하하하하하하하하~~~
어제 도로아미타불된 XAMPP 고쳐야겠어요 ㅠㅠ
정규식은 필요할때 검색만 하던 놈이었는데~
잠깐 해보니 신기방기하긴 하네요.
근데 딱 거기까지만 ㅠㅠ
이건 한방에 안될거 같은데요.

<script>

var str = `#hashtag #hash_tag #hashTag #Hashtag #Hash_Tag
#해시태그 #해시_태그 [:#해시_태그_입니다 #hash0tag:]{:.intro#test}
#这是一个标签 #ハッシュタグです

[:안녕하세요 입니다:]{:.intro}[:테스트입니다.:]{:#test#tes01#test02}{:.intro}`;

var str2 = str.replace(/\{[^}]*\}/g, '');

var result = str2.match(/#[^#:.\[\]{}\s]+/g);

alert(result);

</script>
@유창화 이렇게 해도 될것 같습니다. 다른 분들을 위해서 간단히 설명을 드리면
\{[^}]*\}
로 {}안에 해당되는 것을 일단 지웁니다. 그리고
#[^#:.\[\]{}\s]+
로 #으로 시작되는 것을 찾는 방법입니다.

마크다운 문법에 {}이 사용되서 {:을 넣어서 이것만 수정하면 됩니다.

그런데 위의 사진처럼 나오는 하나의 정규식이 있습니다.
2년 전
위와 같이 나오게 하는 정규식입니다.
(?<!({:)|(\b))#[\p{L}0-9_]+

게시글 목록

번호 제목
10921
10920
10914
10913
10912
10911
10905
10904
10903
10898
10897
10896
10882
10879
10878
10877
10876
10874
10865
10856
10854
10845
10833
10830
10827
10819
10809
10803
10802
10801