정규식을 사용하여 파이썬의 문자열에서 단어로 가져 오는 방법 [중복]

Nov 25 2020

나는 같은 문자열이

string = "Status\t\t: PASS"

이 문자열에서 PASS 만 가져오고 싶습니다.이 정규식을 사용하고 있습니다.

value = re.findall("Status" + r'(.*)', string)

그러나 그것은 나를 반환

"           : PASS"

정규식이 모든 추가 문자 공백 탭 등을 무시하도록하고 싶습니다. 어떻게해야하는지 알려주세요.

답변

3 VivekKumar Nov 25 2020 at 13:36

방법 : regex () + string.punctuation 사용이 방법도 정규식을 사용했지만 모든 구두점을 무시하고 필터링 된 결과 문자열을 얻기 위해 모든 구두점을 가져 오는 문자열 함수를 사용합니다.

# Python3 code to demonstrate 
# to extract words from string 
# using regex() + string.punctuation 
import re 
import string 

# initializing string 
test_string = "Geeksforgeeks, is best @# Computer Science Portal.!!!"

# printing original string 
print ("The original string is : " + test_string) 

# using regex() + string.punctuation 
# to extract words from string 
res = re.sub('['+string.punctuation+']', '', test_string).split() 

# printing result 
print ("The list of words is : " + str(res)) 

산출:

The original string is : Geeksforgeeks, is best @# Computer Science Portal.!!!
The list of words is : [‘Geeksforgeeks’, ‘is’, ‘best’, ‘Computer’, ‘Science’, ‘Portal’] 
2 tshiono Nov 25 2020 at 14:25

다음을 시도해 주시겠습니까?

import re
string = "Status\t\t: PASS"
m = re.search(r'Status\s*:\s*(.*)', string)
print(m.group(1))

산출:

PASS

정규식 설명 Status\s*:\s*(.*):

  • Status\s* 하위 문자열 "상태"및 가능한 경우 다음 공백 문자와 일치합니다.
  • :\s* 문자 ":"및 다음 공백 문자 (있는 경우)와 일치합니다.
  • (.*) 나머지 부분 문자열과 일치하고 캡처 그룹 1이 할당됩니다.
1 Heo Nov 25 2020 at 14:23

이것을 시도하십시오 : regex-demo

Python 소스 :

import re

input1 = "Status\t\t: PASS"
input2 = "Status\t\t: PASS hello"
input3 = "Status\t\t: FAIL hello world"
regex=re.compile('status\s*:\s*(\w+)',flags=re.IGNORECASE)

print(f'result of input1: \n {regex.findall(input1)}')
print(f'result of input2: \n {regex.findall(input2)}')
print(f'result of input3: \n {regex.findall(input3)}')

산출:

result of input1: 
 ['PASS']
result of input2: 
 ['PASS']
result of input3: 
 ['FAIL']