IT이야기

파이썬의 정규식 일치에서 문자열을 반환

cyworld 2021. 9. 26. 11:31
반응형

파이썬의 정규식 일치에서 문자열을 어떻게 반환합니까?


이 질문에 이미 답이 있습니다.

python스크립트를 사용하여 텍스트 파일의 줄을 실행하고 있습니다. img텍스트 문서 내에서 태그 를 검색 하고 태그를 텍스트로 반환하고 싶습니다 .

정규식을 실행하면 개체가 re.match(line)반환 _sre.SRE_MATCH됩니다. 문자열을 반환하려면 어떻게 해야 합니까?

import sys
import string
import re

f = open("sample.txt", 'r' )
l = open('writetest.txt', 'w')

count = 1

for line in f:
    line = line.rstrip()
    imgtag  = re.match(r'<img.*?>',line)
    print("yo it's a {}".format(imgtag))

실행하면 다음이 인쇄됩니다.

yo it's a None
yo it's a None
yo it's a None
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e578>
yo it's a None
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e578>
yo it's a None
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e578>
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e5e0>
yo it's a None
yo it's a None

를 사용해야 합니다 re.MatchObject.group(0). 좋다

imtag = re.match(r'<img.*?>', line).group(0)

편집하다:

다음과 같은 작업을 수행하는 것이 더 나을 수도 있습니다.

imgtag  = re.match(r'<img.*?>',line)
if imtag:
    print("yo it's a {}".format(imgtag.group(0)))

모든 Nones 를 제거합니다 .


여러 img태그 가 있을 수 있다는 점을 고려하면 다음과 같이 권장합니다 re.findall.

import re

with open("sample.txt", 'r') as f_in, open('writetest.txt', 'w') as f_out:
    for line in f_in:
        for img in re.findall('<img[^>]+>', line):
            print >> f_out, "yo it's a {}".format(img)

imgtag.group(0)또는 imgtag.group(). 이것은 전체 일치를 문자열로 반환합니다. 다른 것도 캡처하지 않습니다.

http://docs.python.org/release/2.5.2/lib/match-objects.html


하는 것으로는 re.match(pattern, string, flags=0)단지에서 경기를 반환 시작 문자열. 당신이 일치 찾을하려면 어디 문자열을 사용하는 re.search(pattern, string, flags=0)대신 ( https://docs.python.org/3/library/re.html )를. 이것은 문자열을 스캔하고 첫 번째 일치 개체를 반환합니다. 그런 다음 match_object.group(0)사람들이 제안한 대로 일치하는 문자열을 추출할 수 있습니다 .

ReferenceURL : https://stackoverflow.com/questions/18493677/how-do-i-return-a-string-from-a-regex-match-in-python

반응형