>  기사  >  백엔드 개발  >  역폴란드식 평가를 위해 Python 정규식을 사용하는 방법

역폴란드식 평가를 위해 Python 정규식을 사용하는 방법

PHPz
PHPz원래의
2023-06-23 09:48:141651검색

역폴란드어 표현이 뭔가요?

후위 표현식이라고도 알려진 역 폴란드식은 연산자 우선 순위를 구분하기 위해 괄호가 필요하지 않은 산술 표현식을 표현하는 방법입니다. 특징은 연산자가 피연산자 뒤에 있다는 것입니다. 예를 들어 중위 표현 "3 + 4 5"를 역 폴란드 표현으로 변환하면 "3 4 5 +"가 됩니다.

Python 정규 표현식이란 무엇입니까?

Python 정규 표현식은 텍스트 데이터를 일치시키고 처리하는 도구입니다. 정규식을 사용하여 텍스트의 패턴을 검색할 수 있습니다. Python은 정규식 기능을 사용하기 위해 "re" 모듈을 제공합니다.

역 폴란드어 표현식 평가를 위해 Python 정규 표현식을 사용하는 방법은 무엇입니까?

역 폴란드식 평가 알고리즘을 구현하려면 다음 단계가 필요합니다.

  1. 각 연산자와 피연산자를 순서대로 확인할 수 있도록 역 폴란드 식을 목록으로 변환합니다.
  2. 빈 스택을 생성합니다.
  3. 변환된 A; 각 요소에 대해 다음을 수행하는 역 폴란드식 목록:
    a. 숫자인 경우 스택 맨 위로 푸시합니다.
    b. 연산자인 경우 스택의 상위 두 요소를 팝합니다.
  4. 순회가 완료되면 스택 맨 위에 있는 요소는 역방향 폴란드식의 평가 결과입니다.

Python 정규 표현식을 사용하면 역폴란드 표현식을 목록으로 변환하는 기능을 쉽게 구현할 수 있습니다. 샘플 코드는 다음과 같습니다.

import re

expression = "3 4 5 * +"
tokens = re.findall("d+|S", expression)

print(tokens) # ['3', '4', '5', '*', '+']

그런 다음 위의 단계에 따라 역 폴란드어 표현의 평가 알고리즘을 구현할 수 있습니다. 샘플 코드는 다음과 같습니다.

stack = []
for token in tokens:
    if re.match("d+", token):
        stack.append(int(token))
    else:
        operand2 = stack.pop()
        operand1 = stack.pop()
        if token == "+":
            stack.append(operand1 + operand2)
        elif token == "-":
            stack.append(operand1 - operand2)
        elif token == "*":
            stack.append(operand1 * operand2)
        elif token == "/":
            stack.append(int(operand1 / operand2))

result = stack.pop()

print(result) # 23

이 코드는 빈 스택을 생성하고, 역 폴란드식 표현식 목록을 반복하고, 각 연산자와 피연산자를 확인하고, 스택에서 해당 연산을 수행하고, 마지막으로 맨 위에 있는 요소를 반환하는 방식으로 작동합니다. 결과로 스택의.

결론

Python 정규식을 사용하면 역폴란드식을 목록으로 쉽게 변환하고 스택에서 산술 계산을 수행할 수 있습니다. Python의 정규 표현식은 매우 강력하며 빠르고 유연하며 안정적인 텍스트 일치 및 처리를 달성하는 데 도움이 될 수 있습니다.

위 내용은 역폴란드식 평가를 위해 Python 정규식을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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