2016-07-30 4 views
0

정규 표현식에 대한 멍청한 생각 (미안). 굵게 기울임 꼴과 일치하고 HTML로 변환하는 매우 간단한 마크 업 언어를 만들려고했습니다.Golang의 Regex : 문자열을 일치시키지 않는 문자를 설정하는 방법은 무엇입니까?

var bold = regexp.MustCompile("\\*([^\\*]+)\\*") 

그것은 두 개의 별표 사이에있는 모든 일치 : 여기 내가 사용 굵게에 대한 예입니다. 자, *test*과 일치하고 싶지만 \*test*이 아닙니다. 정규 표현식에 대해 많이 알지 못하기 때문에이 실험을하려고합니다. 그 방법이 무엇인지 알고 싶습니다. 나는 도처에서 수사했지만이 일을 할 길을 찾지 못했습니다.

+0

여기에서 문제는 '\\ * 테스트 *'가있는 경우 접근 방식이 작동하지 않는다는 것입니다. 이 작업을위한 파서를 작성해야하며 regexps는 사용하지 마십시오. –

답변

0

lookbehinds을 지원하지 않습니다

이동 업데이트되었습니다. 따라서 해결 방법은 다음과 같을 수 있습니다 :

(?:\A|(?:[^\\]+|\A)(\\{2})+|[^\\])\*([^\\*]+)\* 
+0

이 정규식은'\\ * test * '와는 일치하지 않지만이'test'는 유효한'*'구분 기호 사이에 나타납니다. escape sequence로 문자열을 파싱 할 때 1-regex 솔루션에 의존 할 수 없습니다. –

+0

왜 \\ * test *와 일치해야합니까? @ WiktorStribiżew – revo

+0

''\\''은 리터럴''\''이기 때문에 일치해야하는'* test *'가옵니다. –