파이썬으로 가격을 잡으려고했지만 정규식은 아무것도 반환하지 않습니다.
문장은 "Word1 WordA WordB WordC ... WordX : Price €"입니다. 우리는 Word1을 알고 있지만 가격 ( "," "."이있는 4 자리 숫자 또는 첫 번째와 두 번째 숫자 사이에 아무것도 없음)도 알지 못합니다.
Word1 다음에 오는 "€"바로 앞에 Price 번호를 가져와야합니다.
나는 이것을 만들었다 :
regex = "(Word1) ([a-zA-Z])+ ( :)? ([0-9]{0,4})+ €"
일치하는 항목 :
Word1 zerdezd : 1243 €
Word1 zerdezd 1243 €
하지만 아닙니다
Word1 zerdezd ezrozeu : 1243 €
그리고 이것은 작동하지 않습니다 ...
(Charges) (([a-zA-Z])+ )+( :){0,1} ([0-9]{0,4})+ €
유로 기호가 뒤 따르는 그룹 1의 금액을 캡처 할 수있을 때까지 Word 뒤에 가능한 최소한의 문자를 일치시킬 수 있습니다.
\bWord1 .*?\b([0-9]{1,4}(?:[.,]\d+)?) €
패턴은 다음과 일치합니다.
\bWord1 .*?
단어 뒤에 공백과 가능한 한 최소한의 문자 일치\b(
단어 경계, 시작 그룹 1
[0-9]{1,4}(?:[.,]\d+)?
선택적 소수점 부분을 사용하여 1-4 자리 숫자 일치)
그룹 1 닫기 €
문자 그대로 일치 (또는 \s*€
0 개 이상의 공백 문자가있을 수있는 경우 사용 )예
import re
regex = r"\bWord1 .*?\b([0-9]{1,4}(?:[.,]\d+)?) €"
s = ("Word1 zerdezd : 1243 €\n"
"Word1 zerdezd 1243 €\n"
"Word1 zerdezd ezrozeu : 1243 €")
print(re.findall(regex, s))
산출
['1243', '1243', '1243']
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다