java - 형식(연산자 arg1 arg2 ... argn)의 문자열을 분할하는 방법은 무엇입니까?
世界只因有你
世界只因有你 2017-06-23 09:13:59
0
2
984

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

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

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

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

世界只因有你
世界只因有你

모든 응답(2)
仅有的幸福

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

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

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

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

으아악 으아악

S 표현

阿神

일반:

으아악

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

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿