내 프로그램에서 중괄호로 묶인 문자열을 반복적으로 검색하려고합니다. 즉, {example1 {example2}} {example3} {example4}
이 주어지면 example1 {example2}
, example3
및 example4
과 일치합니다. \{.+\}
을 사용해 보았지만 example1 {example2}} {example3} {example4
과 일치합니다. \{.+?\}
은 example1 {example2
, example3
및 example4
과 일치합니다. 정규식으로 또는 Java에서 단순히 원하는대로 할 수있는 쉬운 방법이 있습니까? 나는 당신이 아마 말할 수 있듯이 정규식에 정통하지 않습니다.중첩 된 문자열을 올바르게 정규 표현하는 방법
0
A
답변
3
정규 표현식은 상태가 필요한 구문 분석에 적합하지 않습니다. 일부 시나리오에서는 작동하지만, 일반적인 경우를 처리 할 수있는 좋은 정규 표현식은 아닙니다.
문자열을 명시 적으로 구문 분석하는 것이 좋습니다. 기본적으로, 문자 하나씩 검색하고 다음 문자가
경우
{
은 "중첩 카운터를"증가한다.nesting counter==1
인 경우 새 그룹을 시작하고 다음 문자로 건너 뜁니다.숯이
}
인 경우 카운터를 줄입니다.nesting_counter == 0
인 경우 현재 그룹을 끝내고 다음 char로 건너 뜁니다.nesting_counter>0
인 경우 그룹에 현재 문자를 추가하고 계속하십시오.
관련 문제
- 1. 공백 문자를 올바르게 표현하는 방법
- 2. 언어와 같은 간단한 쿼리를 정규 표현하는 방법
- 3. 중첩 된 문자열을 Python의 regex로 바꿉니다.
- 4. 유닉스 정규 표현식 - 숫자 그룹을 표현하는 방법
- 5. SMPP에서 메시지 클래스를 올바르게 표현하는 방법
- 6. 중첩 된 정규 표현식을 일치하는 방법
- 7. 정규 표현식을 사용하여 다음과 같은 문자열을 표현하는 방법은 무엇입니까?
- 8. alnum과 하이픈의 문자열을 정규 표현하는 방법은 하이픈으로 시작하거나 끝나지 않습니까?
- 9. for-comprehension을 사용하여 다음 중첩 된 미래를 표현하는 방법
- 10. 게임에서 3D 회전을 올바르게 표현하는 방법
- 11. 이상한 행동을 표현하는 정규 표현식
- 12. 중첩 된 문자열을 처리하는 재귀 정규 표현식 {| and |}
- 13. 정규 표현식을 사용하여 문자열을 올바르게 파싱합니다.
- 14. 중첩 된 HasTraits 객체, 올바르게 초기화하는 방법
- 15. 중첩 된 데이터를 올바르게 표시하는 방법
- 16. Lua : 중첩 된 함수를 올바르게 작성하는 방법
- 17. 정규 표현식은 중첩 된 앵커
- 18. URL 경로 목록을 정규 표현하는 방법은 무엇입니까?
- 19. 정규 표현식을 표현하는 선언적 방법이 필요합니까? :)
- 20. .htaccess redirects - "중첩 된"문자열을 처리하는 방법?
- 21. 문자열을 올바르게 해시하는 방법
- 22. 보고서 작성기에서 문자열을 동적으로 표현하는 방법은 무엇입니까?
- 23. Java Scrabblecheater : 중첩 ArrayList에 올바르게 쓰는 방법
- 24. 숫자 범위를 오름차순으로 표현하는 정규 표현
- 25. 이것을 정규 표현식으로 표현하는 방법은 무엇입니까?
- 26. 중첩 된 DIV가 올바르게 위치하지 않습니다.
- 27. 중첩 된 문장을 목록 이해력으로 표현하는 방법은 무엇입니까?
- 28. 공백과 일치하는 정규 표현식을 표현하는 짧은 방법 또는 " "
- 29. 파이썬에서 중첩 된 정규 표현식 대체
- 30. 정규 표현식을 사용하여 중첩 된 요소를 제거합니다.
정규식은이 용도로 사용되지 않으므로 분명히 가능합니다. 그러나 코드 작성은 절대적인 고통입니다. 그냥 문자열을 가로 지르고'{'와'} '의 수를 추적하십시오. – Keppil
@AvinashRaj 이것은 대괄호가 균형을 이루는 지 확인하기보다는 문자열을 추출하려고하므로 중복되지 않습니다. –
@Keppil, 실제로 그것이 내가 끝내었던 것이다. 놀랄만큼 작은 코드였다. –