Python3, 괄호()가 있는 string에서 가장 안쪽의 괄호안에 있는 내용을 가져오는 방법
조회수 746회
아래와 같은 Boolean expression string이 있습니다. 여기서 괄호를 인식하여 가장 안쪽의 괄호안에 있는 내용을 가져오고 싶습니다.
(((x12 & x20) & x05) | x02) | ((x12 & x13)) | (x13 | x20)
Result: (x12 & x20)
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
>>> s = '(((x12 & x20) & x05) | x02) | ((x12 & x13)) | (x13 | x20)' >>> 답 = '' >>> 깊이 = 0 >>> 최고깊이 = 0 >>> for c in s: if c == '(': 깊이 += 1 노드스트링 = '' elif c == ')': print('--'*깊이, 노드스트링) if 깊이 > 최고깊이: 최고깊이 = 깊이 답 = 노드스트링 깊이 -= 1 else: 노드스트링 += c ------ x12 & x20 ---- x12 & x20 & x05 -- x12 & x20 & x05 | x02 ---- x12 & x13 -- x12 & x13 -- x13 | x20 >>> 답 'x12 & x20' >>>
-
윗분처럼 탐색(깊이우선)으로 찾는 방법도 있겠으나 파이썬의 ast 모듈을 활용할 수 있습니다. 실질적인 무엇인가(예를 들어 소스분석등)를 위해서는 ast가 최선의 도구가 됩니다.
댓글 입력