두 중괄호 사이에 코드를 가져 오려고하지만 여전히 중첩에주의하십시오. 내가 입력으로 다음과 같은 것을 가지고 말 :중첩을 존중하면서 두 중괄호 사이의 코드를 찾으려면 어떻게해야합니까?
while (true) { [A]
dothis();
if (whattype() == "A") { [B]
doA();
if (other() == "dog") { [C]
doB();
} [D]
} [E]
if (other() == "cat") { [F]
doZ();
} [G]
} [H]
를 그리고 각각의 중첩 레이어 재귀 루프를 원하는 :
while
- if
- if
- if
는 현재 함수는 문자열을 취 탐욕 코드를 찾기 위해 정규식 (\{([\s\S]*)\}
)를 사용 첫 번째와 마지막 중괄호 사이에 입력하고 문자열에 더 이상 중괄호가 없을 때까지 내용에 다시 입력합니다.
문제는 정규식이 서로 인접한 코드 블록에 대해 작동하지 않는다는 것입니다. 정규 표현식은 B 사이의 텍스트를 G까지 일치시킵니다. 대신 B에서 시작하여 E에서 중지하고 F에서 G까지 다른 블록으로 이동해야합니다.
편집 : 정규식 이외의 다른 것으로 끝날 수 있습니다. 이것을 처리하는 방법에 대한 제안이 있습니까? 미래의 독자
: 나는 도움이되었다고 무엇
다른 SO 질문에서 this 대답했다.
중괄호/중괄호는 "정규식으로 할 수없는 일"의 전형적인 예 중 하나입니다. – Pointy
@Pointy 다른 것을 사용하게 될지도 모르지만,이 논리를 어떻게 수행 할 것인지에 대한 제안이 있습니까? – aNewStart847
각 줄을 반복하십시오. '{'에 도달하면 변수에 1을 추가하고'}'에 도달하면 var에 1을 더합니다. –