2013-10-21 2 views
4
나는 다음과 같은 정규 표현식을 섞어서

, 그는 나에게 오는 뷰의 모든 텍스트를 제공하도록되어 :정규 표현식 일치

region = currentView.find("(?<=\\})[^\\}]+\\}[^\\}]*$", 0) 

숭고한 텍스트는 $이 "보기에있는 모든 것의 끝"을 의미하는 것 같지 않습니다. 솔직히 말해서, 숭고한 텍스트가 의미하는 바를 이해하지 못합니다.

regexr.com에 나와있는 것처럼 정규 표현식이 작동하는 것 같습니다.

이 나는 ​​순간에 살 수있는 내 특정 cirmunstance에 대한 해결 방법을 발견

regions = currentView.find_all("\}") 
    if len(regions) > 1: 
     # stuff I am doing with regions[-2] goes here 

하지만 난 그게 뷰의 내용의 끝 부분에 대해 일치 있는지 알고 싶습니다.

+0

'$'는 정규 표현식에서 "문자열의 끝"을 의미합니다. 그래서 당신의 끝은 문자열의 끝인가요? – HamZa

+0

숭고한 텍스트가 어떻게 그것의 버퍼를 구현하는지에 대해 나는 충분히 모른다. 내가 찾고있는 것 같아 * 버퍼의 끝 *, 그리고 나는 * 문자열의 끝을 생각 * 작동합니다 ... – DudeOnRock

+0

만약 당신이 정규식을 만들고 싶다면, 당신은 당신이 기대하는 몇 가지 입력을 알고 있어야합니다. 그런 다음 패턴을 자세히 설명합니다. 그럼 우리에게 약간의 의견을 제공 할 수 있습니까? 또한'\\}'을 왜 사용하는지 이해하지 못하는 것 같습니까? 리터럴'}'과 일치 시키려면'\}'충분하지 않습니까? – HamZa

답변

6

$ 정규식의 끝 부분은 전달되는 엔진 및 수정 자 플래그에 따라 행의 끝이나 입력의 끝을 의미 할 수 있습니다. Sublimime의 문서에서 경계가 \z 이것은 "입력 버퍼의 끝"을 명확하게 의미합니다. 따라서 $\z으로 대체하여 도움이되는지 확인해보십시오.

+0

똑똑! 그것은 내가 원하는 것을 정확하게합니다. Sublime의 문서에서 어디에서 답을 찾았는지 물어봐도 될까요? 나는 그곳을 아주 광범위하게 보았다! – DudeOnRock

+4

[Sublime 's doc] (http://docs.sublimetext.info/en/latest/search_and_replace/search_and_replace_overview.html#regular-expressions) 마지막 문장은 Boost 구문을 참조합니다. Boost의 문서에는 [Buffer Bundaries] (http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax)가 있습니다. perl_syntax.buffer_boundaries) – jwatkins