홈>
이 정규식을 사용하고 싶습니다
r"Summe\d+\W\d+"
이 문자열과 일치합니다
150,90‡50,90‡8,13‡Summe50,90•50,90•8,13•Kreditkartenzahlung
그러나이 특정 부분 만 걸러 내고 싶습니다
Summe50,90
이 정규 표현식으로 전체 문자열을 선택할 수 있지만 일치하는 부분 만 필터링하는 방법을 모르겠습니다
여기서 PDF에서 금액을 얻으려고하는 기능이 있습니다 :
def get_amount(url):
data = requests.get(url)
with open('/Users/derricdonehoo/code/derric-d/price-processor/exmpl.pdf', 'wb') as f:
f.write(data.content)
pdfFileObj = open('exmpl.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(0)
text = pageObj.extractText().split()
regex = re.compile(r"Summe\d+\W\d+")
matches = list(filter(regex.search, text))
for i in range(len(matches)):
matchString = '\n'.join(matches)
print(matchString)
위에서 설명한 것처럼 일치하는 부분 만 반환하도록이 문자열의 일부를 가장 잘 필터링하는 방법에 대한 지침을 원합니다. 가급적이면 길이가 다른 문자를 사용하지만 우선 순위는 아닙니다.
감사합니다 !!
- 답변 # 1
- 답변 # 2
부족한 것은 성냥을 "잡는"편리한 방법입니다.
import re text = "150,90‡50,90‡8,13‡Summe50,90•50,90•8,13•Kreditkartenzahlung" match = re.search("Summe\d+\W\d+", text) if match: res = match.group() >>> print(res) 'Summe50,90'
group
참고 정규식 내부에서 그룹을 반환하기 위해 색인을 허용하지만 그룹을 사용하지 않기 때문에 ((...)
로 둘러싸인) 정규 표현식에서) 간단히 그렇게 부르십시오.상기 패턴의 모든 발생을 찾으려면
re.findall
를 사용하십시오. :
이 경우 모든 일치 항목 (일치 개체가 아닌 문자열)이 포함 된 목록이 반환됩니다. 다시 한 번 캡처 그룹을 사용하면 각 튜플에 일치하는 모든 그룹이 포함 된 튜플 목록이 반환됩니다.import re text = "150,90‡50,90‡8,13‡Summe50,90•50,90•Summe8,13•Kreditkartenzahlung" matchs = re.findall("Summe\d+\W\d+", text) >>> print(matches) ['Summe50,90', 'Summe8,13']
방법에 대해 읽으십시오-re.search and re.findall
- 답변 # 3
이 단순한 표현은 여기서 효과가있을 것입니다.
테스트(Summe.+?)•
데모import re regex = r"(Summe.+?)•" test_str = "150,90‡50,90‡8,13‡Summe50,90•50,90•8,13•Kreditkartenzahlung" matches = re.finditer(regex, test_str, re.MULTILINE) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
- 답변 # 4
\W
아마도 모든 것을 Kredit에 일치시킬 것입니다 ...regex = r'Summe\d+,\d{2}'
Summe 이후 처음 50,90과 일치해야합니다.
분리 쉼표가 너무 구체적이면 (점으로 표시 될 수 있으므로) 문자 세트를 사용할 수 있습니다.
regex = r'Summe\d[,.]\d{2}'
관련 자료
- pandas - 정규식 - 자신을 포함하는 문자열이 뒤에 오는 경우 문자 일치
- 정규식 - 문자 집합의 문자열과 일치하지만 특정 문자가 정확히 x 개 여야합니다
- java - 정규식을 사용하여이 문자열을 일치시키는 방법
- python - 문자열의 특수 문자 인 경우 정규식이 일치하지 않습니다
- php - 정규식은 다른 문자열없이 특정 문자열과 일치합니다
- c# - 식별 할 때 정규식을 통해 마지막 숫자 선택 (문자열 + 숫자)
- 정규식에서 특정 문자열 패턴과 일치하지만 주석 처리 된 줄은 생략합니다
- 정규식 시퀀스 끝에서 문자열을 일치시키는 방법은 무엇입니까?
- 임의의 순서로 요소가있는 정규식 일치 그룹
- visual studio - 정규식은 하나 이상의 대문자를 포함하는 전체 줄을 선택합니다
- javascript - 이미지의 정규식 일치 URL
- c++ - 내 코드에서 정규식을 사용하여 쉼표로 나눈 문자열 줄을 분할하려면 어떻게해야합니까?
- Regex - 정규식 - "de"로 시작하지만 lookahead 또는 lookbehind를 사용할 수없는 문자열을 방지하는 방법은 무엇입니까?
- 유형 주석과 일치하는 자바 스크립트 정규식
- arrays - React/Javascript 검색을 위해 문자열에서 연속되지 않은 두 단어를 일치시키는 방법은 무엇입니까?
- postgres regex - 패턴의 마지막 발생과 줄 끝 이후의 문자열 추출
- php - 특수 조건에서만 문자열에서 숫자를 제거하는 정규식 가이드
- regex - 두 태그 (또는 별표 두 개) 사이에 줄 바꿈 일치
- html - jQuery 정규식 일치가 div 클래스에 추가되지 않음
- 정규식없이 MongoDB에서 문자열로 십진수를 0으로 일치
관련 질문
- python : 부분 문자열의 시작과 끝의 정규식 추출
- (Python) 두 개의 동일한 숫자를 계산할 때 빈 출력을 얻고 Regex w/dict에서 키 이름을 변경할 수 없음
- python을 사용하여 PDF 파일 형식의 악성 PDF에서 데이터/주요 콘텐츠 추출
- python : Regex를 사용하여 여러 줄을 선택하는 방법
- python : 특정 단어로 시작하는 줄과 일치하는 정규식 패턴
- Python Regex: 왜 물음표(?)가 추가 공백과 일치합니까?
- python : 정규식은 'substr'에서 시작하지만 'substr'을 포함하지 않는 모든 문자열을 찾습니다.
- python : 공백으로 구분된 단어 그룹과 일치하는 정규식
- python : 일치하는 구문을 찾는 정규식 패턴
- 접두사 문자열 목록을 다른 문자열과 일치시키는 Python 정규식
이것은 원하는 것입니다. 정규 표현식은 정확하지만 검색 한 후에 일치해야합니다.
re.search는
None
성공시 Match 객체를 반환합니다. 실패하면 해당 개체에는 일치하는 정규식에 대한 모든 정보가 포함됩니다. 전체 경기를하려면 Match.group ()이라고 부릅니다.