gpt4 book ai didi

python - 价格的正则表达式不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:52 25 4
gpt4 key购买 nike

我需要一个正则表达式,它匹配任何数字后跟一个由数字、空格、点和逗号组成的字符串,后跟“Kč”或“Eur”。

问题是我的 regex 有时找不到所有这样的字符串。

((\d[., \d]+)(Kč|Eur))

例如:

re.findall("""((\d[., \d]+)(Kč|Eur))""","Letenky od 12 932 Kč",flags=re.IGNORECASE)

不返回任何内容,而是 [(12 932 Kč,12 932,Kč)]

你知道正则表达式有什么问题吗?

最佳答案

您的输入字符串包含一个由基数 c 组成的多字节字母字母和变音符号,正则表达式包含带有 Unicode 代码点的预组合字母 \u010D .

你可以使用

(\d(?:[., \d]*\d)?)\s*(K(?:c\u030C|\u010D)|Eur)

或者

(\d[., \d]*)\s*(K(?:č|č)|Eur))

参见 regex ( second regex demo ) 和 Python demo .

图案细节

  • \d - 一个数字
  • (?:[., \d]*\d)? - 可选的出现
    • [., \d]* - 零个或多个数字、空格、.,
    • \d - 一个数字
  • \s* - 0 个或多个空格
  • (?:K(?:c\u030C|\u010D)|Eur) - K其次是 c\u030C\u010D , 或 Eur值(value)观。

定义货币正则表达式时,使用 CZK = ['Czk','K(?:č|č)']CZK = ['Czk', r'K(?:c\u030C|\u010D)'] .

关于python - 价格的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51021110/

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