正则表达式查找不在短语中的数字
Regex to find numbers that are not in a phrase
如果我有这个字符串:
Beschreibung Menge VK-Preis MwSt% Betrag
Schadenbewertunginkl.Restwertermittlung 1 25,00€ 19 25,00€
Rechnungsbetragexcl.MwSt.: 25,00€
MwSt.(19%): 4,75€
Rechnungsbetragincl.MwSt.: 123.029,75€
我想提取所有的数字。
我的正则表达式是:
regex_up_to_thousand = r'\b(?:\d{1,3}){1}(?:,{1}\d{2})\b'
和
regex_every_price = r'\b(?:\d{1,3}(\.|,))+(:?\d{3}(\.|,))(?:\d{2})\b'
我的想法是首先获取“大”价格,将它们从文本中删除并获取其他数字。
这在大多数情况下都有效,直到我有一个看起来像这样的日期 maybe
Gutachtennummer: 1009126 Leistungsdatum: 11.10.2021
我会用我的第二个正则表达式得到 11.10,但我不知道如何防止这种情况发生。
我认为 \b
会有帮助,但遗憾的是没有。
有什么想法吗?
这不是世界末日,因为我在后台做了很多数学运算,但有可能某个日期适合某些值,最后我计算出了一些错误。
您可以尝试以下模式。
\b\d+(?:(?:\.|,)\d{3})*(?:(?:\.|,)\d{2})\b(?!\W\d)
最主要的是最后的 (?!\W\d)
,它确保在您的金额之后您不会有 1 个 non-word 字符后跟 1 个数字的结构。
如果我有这个字符串:
Beschreibung Menge VK-Preis MwSt% Betrag
Schadenbewertunginkl.Restwertermittlung 1 25,00€ 19 25,00€
Rechnungsbetragexcl.MwSt.: 25,00€
MwSt.(19%): 4,75€
Rechnungsbetragincl.MwSt.: 123.029,75€
我想提取所有的数字。 我的正则表达式是:
regex_up_to_thousand = r'\b(?:\d{1,3}){1}(?:,{1}\d{2})\b'
和
regex_every_price = r'\b(?:\d{1,3}(\.|,))+(:?\d{3}(\.|,))(?:\d{2})\b'
我的想法是首先获取“大”价格,将它们从文本中删除并获取其他数字。 这在大多数情况下都有效,直到我有一个看起来像这样的日期 maybe
Gutachtennummer: 1009126 Leistungsdatum: 11.10.2021
我会用我的第二个正则表达式得到 11.10,但我不知道如何防止这种情况发生。
我认为 \b
会有帮助,但遗憾的是没有。
有什么想法吗? 这不是世界末日,因为我在后台做了很多数学运算,但有可能某个日期适合某些值,最后我计算出了一些错误。
您可以尝试以下模式。
\b\d+(?:(?:\.|,)\d{3})*(?:(?:\.|,)\d{2})\b(?!\W\d)
最主要的是最后的 (?!\W\d)
,它确保在您的金额之后您不会有 1 个 non-word 字符后跟 1 个数字的结构。