개인 프로젝트로서 Go (lang)을 무언가에 적용하여 배우려고 노력하면서 EMCAScript/JavaScript "컴파일러"를 작성했습니다. 모두 (처음에) 수행하면 다른 .js 파일을 포함 할 수 있습니다.Golang 정규식 - 내가 뭘 잘못하고 있니?
기능을 제외하고는, 나는 regexp
꾸러미를 이해하려고 노력하면서 내 머리카락을 꺼내고있다. 정규식이 ^\s*include\("([^"]+)"\);
과 같이하지 않습니다 따라서 왜, 나는 이미 정규 표현식의 이동의 부분 집합을 우연히 발견 한
// Note: "lines" is an array of strings.
var includeRegex, _ = regexp.Compile("^[ \t]*include[(]{1}\"([^\"]+)\"[)]{1};")
for _, line := range lines {
var isInclude = includeRegex.Match([]byte(line))
if isInclude {
var includeFile = includeRegex.FindString(line)
fmt.Println("INCLUDE", includeFile)
} else {
// ...
}
: 여기에 원하는 일을하지 않는 것 코드 조각입니다. 나는 이미 RegexPal에서 선호도와 Go 스타일의 정규식을 모두 테스트했으며, 둘 다 확실히 작동합니다. 경기는 결코 생기지 않는 것 같습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 그것은 가치가 무엇인지에 대한
, 내가 지금 같은 모습을 구문 분석을 시도하고있는include()
문 :
include("somefile.js");
편집 : 그것은 가치가 무엇인지, 내가 코드 here를 유지하고있다하십시오.
이 매주 최신으로 작동하는 것 같다
"문자 클래스에 없을 때는 다시 한 번 이스케이프 처리해야 할 것 같습니다. 현재 백 슬래시는 캡슐화 된 문자열에 있기 때문에 현재 만드는 것입니다." – Leif
그래서'\ "의 모든 인스턴스를'\\"'로 변경해야한다는 것을 의미합니까? 나는 그것을 시도하고, 그것은 작동하지 않았다. – nesv
오, 그리고 backticks에서 "문자열"을 포장도 작동하지 않습니다. – nesv