Ruby에서 여러 줄 모드에서 제대로 작동하지 않는 정규식이 있습니다.이 다중 행 정규 표현식을 Ruby에서 어떻게 수정합니까?
마크 다운 텍스트를 Redmine에서 사용되는 Textile-eque 마크 업으로 변환하려고합니다. 문제는 코드 블록을 변환하는 정규식에 있습니다. 그것은 4 줄의 공백이나 탭으로 이어지는 줄을 찾은 다음 태그 앞에 포장해야합니다.
markdownText = '# header
some text that precedes code
var foo = 9;
var fn = function() {}
fn();
some post text'
puts markdownText.gsub!(/(^(?:\s{4}|\t).*?$)+/m,"<pre>\n\\1\n</pre>")
의도 된 결과는 "FN();"
# header
some text that precedes code
<pre>
var foo = 9;
var fn = function() {}
fn();
</pre>
some post text
문제가 폐쇄 사전 태그는 문서의 끝에 대신 후 인쇄되어있다. 나는 다음과 같은 표현의 몇 가지 변화를 시도했지만이 일치하지 않습니다
gsub!(/(^(?:\s{4}|\t).*?$)+^(\S)/m, "<pre>\n\\1\n</pre>\\2")
가 어떻게 정규 표현식 그냥 들여 쓰기 코드 블록을 일치합니까? Rubular here에서이 정규식을 테스트 할 수 있습니다.
이 왜 정규식에 줄 바꿈을 포함하지 :'((:?.? \의 {4} | \ t) * \ n)를 XHTML 자체에 포함 제외 [정규식 일치 열린 태그 +' –
가능한 중복 태그] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –
@Mladen Jablanovic이 코드를 사용하여 예제를 얻을 수 없습니다. 'markdownText.gsub! (/ ((? : \ s {4} | \ t). *? \ n) + /, "
")'을 넣습니다. '\ n'은'$'와 어떻게 다르게 동작합니까? – DonovanChan