정규 표현식을 사용하여 수학 표현 파서를 작성 중이며 괄호에 대한 지원을 추가하려고합니다.정규식을 사용하여 괄호 식을 일치시킵니다.
내 파서는 다음과 같이 작동합니다 : 그것은 재귀 그 때문에
function parse_expression(expression){
Find parenthetical expressions
Loop through parenthetical expressions, call parse_expression() on all of them
Replace parenthetical expression with value of expression
Find value of expression
Return value
}
, 나는 단지 최 괄호 표현을 찾을 필요가있다. 예를 들어 "(5 + (4 + (3 * 2) + 2)) + (1 + 2)"문자열을 구문 분석하는 경우 "5 + (4 + (3/4) + (3 * 2) +2)」및 「1 + 2」로된다. 정규 표현식으로 어떻게 이것을합니까?
"(\ [(^ \)] +) \)") 정규 표현식은 "5 + (4 + (3 * 2)"를 반환합니다. 그리고 두 번째의 아무도를 얻을 수 없습니다.
어떤 아이디어?
감사합니다,
카일 내가 잘못 아니에요 경우가 이론적으로 불가능하므로,이 언어는, 정기적으로하지 않습니다
이것은 영리한 해결책이다. 그것은 많은 문자열 조작을 요구하며, 많은 수를 다시 구문 분석 할 것을 요구할 것입니다, 그러나 그것은 다르게 작동해야합니다. –
나는 그것을 좋아한다. 그것은 위대한 일을해야합니다. 감사. – Kyle
나는 이것을 시도하고 당신이 제공 한 정규 표현식에 대한 약간의 수정이 있어야한다. '(\\ ([^ \\ (] +? \\))'(괄호를 이스케이프하려면 백 슬래시를 추가하고 가능하면 일치 시키려면 물음표를 추가하십시오.) – Kyle