欧元金额的正则表达式

2024-10-03 17:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要找到一个只选择金额(以欧元为单位)的正则表达式,因此值的前面需要有一个euros,并且在,之后我们有便士,也可以有空格或点

7 967  59 €
- 9847, 48 euros à titre de rappel de salaire sur le bonus de l'année 2012,
 - 1929, 78 euros à titre de rappel de salaire sur le bonus de l'année 2013,
  - 129 689, 78 euros à titre de solde d'indemnité conventionnelle de licenciement,
- 1098 euros au titre du paiement du DIF,
é à 20 892, 05 euros, il ressort des pi
le de 27 084, 26 euros
ée à 26 395, 10 euros, hors bo
 de 129 689, 78 euros,
6.000 € au titre des dommages et intérêts pour licenciement sans cause réelle et sérieuse,
 1.510 € au titre de l'indemnité compensatrice de préavis,
 151 € au titre des congés payés y afférents, 739 € au titre de l'indemnité de licenciement,
 656,19 € au titre de l'indemnité due au titre de la non rémunération de la période de mise à pied conservatoire,
 65,61 € au titre des congés payés afférents,
 2.000 € au titre de  59 € au titre de <span class="highlight_underline">l'indemnité légale de licenciement</span>
2014,7 967, 59 € au titre de <span class="highlight_underline">l'indemnité légale de licenciement</span>
rappel de salaires de janvier 2007 au 7 mars 2007 3.708,34 €
SECTION B N° 419 425 426 427 428 429 430 432 433 434 436 441 442 443 444 446 467 571 572

我想到了这个:

(\d.+\d+)(?:\s(?:euros?|€))

但它并不像它应该的那样准确

有人能帮我吗

编辑:

@Wiktor Stribiżew给了我:

(\d[\d.\s,]*)(?:\s(?:euro|€))

这很接近,但通过以下示例:

2014,7 967, 59 €

它还需要2014,

49715 11000158926 101,30 €

它需要49715 11000158926。人数限制为3人一组

2007 3.708,34 €

它不应该也需要2007

编辑2:

感谢您的回答,但在我的python脚本中似乎不起作用:

import regex
sentences_pd = pd.read_csv('sampled_amounts.csv', names=["text"])
sentences_pd.head()
print([(regex.findall("\b((?:\d+|\d{1,3}(?:[,.\s]\d{3})*)(?:[,.\s]*\d+)?)\s(?:euros?|€)", x)) for x in sentences_pd['text']])

文本列看起来像:

enter image description here

它给了我一个空数组

[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]

Tags: lesentencesdepdauspandesbonus
2条回答

你可以用

\b((?:\d+|\d{1,3}(?:[,.\s]\d{3})*)(?:[,.\s]*\d+)?)\s(?:euros?|€)

regex demo

详细信息

  • \b-单词边界
  • ((?:\d+|\d{1,3}(?:[,.\s]\d{3})*)(?:[,.\s]*\d+)?)-第1组
    • (?:-交替组开始
      • \d+-1+位
      • |-或
      • \d{1,3}-1到3位数字
      • (?:[,.\s]\d{3})*-0+序列
        • [,.\s]-1空格、,.
        • \d{3}-3位数字
    • )-交替组的结尾
    • (?:[,.\s]*\d+)?-一个可选的
      • [,.\s]*-0+空格,,.
      • \d+-1个或多个数字
  • \s-a空白
  • (?:euros?|€)-要么{},{}要么{}

如果有帮助,我为西班牙价格(欧元)创建了这个正则表达式。条件是:

1.- The decimal point with 2 exact decimals
2.- Decimals can not be "00"
3.- The point of a thousand is not admitted. In my case the prices do not exceed 999 €
4.- The front and back spaces are not allowed
5.- One ¨0¨ is not admitted in front of a whole number

Regex: ^((0\,(?!00)\d{2})|([1-9]\d*(\,(?!00)\d{2})?)|0)$

允许值:

  • 0
  • 1234
  • 0,10
  • 12,34

不允许的值:

  • 0,00
  • 0,1
  • 1234(开头的空格)
  • 1234(末尾的空格)
  • 12,00
  • 01,23
  • 12345
  • 1.234

相关问题 更多 >