>백엔드 개발 >파이썬 튜토리얼 >정규식과 파이파싱을 사용하여 Python에서 중첩된 괄호를 어떻게 효과적으로 추출할 수 있습니까?

정규식과 파이파싱을 사용하여 Python에서 중첩된 괄호를 어떻게 효과적으로 추출할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 11:47:29412검색

How can you effectively extract nested parentheses in Python using regular expressions and pyparsing?

Regex를 사용하여 Python에서 중첩된 괄호 추출

Python에서 정규 표현식을 사용하여 중첩된 괄호를 추출하는 것은 어려울 수 있습니다. 일반적인 접근 방식은 제공된 코드 조각에 설명된 대로 re.compile() 메서드를 사용하는 것입니다. 그러나 복잡한 중첩 구문을 처리할 때 이 방법이 항상 원하는 결과를 얻지 못할 수도 있습니다.

중첩 괄호와 관련된 상황의 경우 pyparsing 라이브러리를 사용하는 대체 접근 방식이 더 큰 유연성을 제공합니다. Pyparsing을 사용하면 예제에서 볼 수 있듯이 보다 정교한 문법 규칙을 생성할 수 있습니다.

<code class="python">import pyparsing # make sure you have this installed

thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'
parens     = pyparsing.nestedExpr( '(', ')', content=thecontent)</code>

nestedExpr() 함수는 중첩된 괄호를 일치시키기 위한 문법을 ​​정의합니다. 세 가지 인수, 즉 여는 괄호와 닫는 괄호 문자, 그리고 괄호 내에서 일치시킬 표현식을 사용합니다.

다음은 정의된 문법을 사용하는 예입니다.

<code class="python">>>> parens.parseString("((a + b) + c)")</code>

이 구문 분석의 출력 연산은 일치하는 표현식의 중첩 목록 표현입니다.

(                          # all of str
 [
  (                        # ((a + b) + c)
   [
    (                      #  (a + b)
     ['a', '+', 'b'], {}   
    ),                     #  (a + b)      [closed]
    '+',
    'c'
   ], {}
  )                        # ((a + b) + c) [closed]
 ], {}  
)                          # all of str    [closed]

일치하는 표현식의 중첩 목록 형식을 얻으려면 asList() 메서드를 사용하세요.

<code class="python">res = parens.parseString("((12 + 2) + 3)")
res.asList()</code>

이 결과는 다음과 같습니다. :

[[['12', '+', '2'], '+', '3']]

따라서 pyparsing의 중첩 표현식 문법을 활용하면 수학적 유사 문자열 내에서 중첩 괄호를 효과적으로 일치시키고 추출할 수 있습니다.

위 내용은 정규식과 파이파싱을 사용하여 Python에서 중첩된 괄호를 어떻게 효과적으로 추출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.