>  Q&A  >  본문

java - 형식(연산자 arg1 arg2 ... argn)의 문자열을 분할하는 방법은 무엇입니까?

함수는
(연산자 arg1 arg2 ... argn)
즉, 연산 기호, 매개변수 1, 매개변수 2, 매개변수 n까지의 형태입니다. 매개변수 자체도 이 형식의 함수일 수 있습니다.
예를 들어, 다음과 같은 문자열은
String="(add (add 1 2) (mul 2 1) 2 )"
을 피연산자와 매개변수로 나누어야 합니다. 즉,

["추가","(추가 1 2)","(mul 2 1)","2"]

이러한 문자 배열은 어떻게 나누어야 할까요?

현재 접근 방식은 매번 가장 바깥쪽 괄호를 제거한 다음 공백을 사용하여 문자열을 분할하려는 것이지만 중간에 있는 공백도 분할되는 장소가 됩니다. 정규식을 사용하는 경우 각 매개변수 내부에 여전히 중첩된 괄호가 있을 수 있으므로 이 상황을 어떻게 일치시켜야 합니까?

世界只因有你世界只因有你2674일 전915

모든 응답(2)나는 대답할 것이다

  • 仅有的幸福

    仅有的幸福2017-06-23 09:15:59

    前缀表示法S-表达式Lisp表达式

    lispS-表达式是多层嵌套的树形结构,比较接近抽象语法树(AST).

    정규형은 재귀 문법 없이는 구문 분석하기 어렵습니다S-表达式.

    다음은 Python으로 작성된 간단한 예입니다. 주석을 달았으니 이해하기 쉬울 것입니다.

    으아악 으아악

    S 표현

    회신하다
    0
  • 阿神

    阿神2017-06-23 09:15:59

    일반:

    으아악

    이 정규식에는 전역 매개변수가 있습니다

    레이어가 1개뿐인 경우arg1, arg2, arg3, ... argn中嵌套(op arg ...)이 방법을 사용할 수 있습니다

    회신하다
    0
  • 취소회신하다