gpt4 book ai didi

python - 仅从连续字符串中选择正则表达式匹配

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:24 32 4
gpt4 key购买 nike

我想使用这个正则表达式

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)

如上所述,我想要有关如何最好地过滤掉该字符串的一部分以便它仅返回匹配部分的指导。最好在两侧使用不同长度的字符,但这不是优先事项。

谢谢!!

最佳答案

我的猜测是这个简单的表达式可能在这里起作用,

(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)))

Demo

关于python - 仅从连续字符串中选择正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56742071/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com