gpt4 book ai didi

regex - 获取任何价格字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-04 01:13:55 24 4
gpt4 key购买 nike

我需要从字符串中获取价格,但不需要其他数字。字符串可以说什么没有限制,但它总是有一个美元金额。这是我需要从字符串中获取的美元金额。

我能找到的最接近的解决方案是 \d{1,3}[,\\.]?(\\d{1,2})?

在一个示例字符串中,“2 BED/2 BATH for $120,000.00, what a deal!!!”,正则表达式应该只返回 $1,000,000,而没有其他数字。上面的解决方案将返回 221,000,000.00。理想的解决方案不应匹配美元金额之外的任何数字。它还需要在匹配之前包含符号(以考虑所有货币符号(美元、英镑、欧元等)的可能性)。

因此,正则表达式匹配的价格应如下所示:$120,000.00,但它也可以匹配类似 €40,000

最佳答案

如果您想将数字前的所有货币符号与数字本身匹配,您可以组合这两个表达式:

  • Currency symbol regex : \b(?:[BS]/\.|R(?:D?\$|p))| \b(?:[TN]T|[CJZ])\$|Дин\.|\b(?:Bs|Ft|Gs|K[Mč]|Lek|B[Zr]|k[nr]|[PQLSR]|лв|ден|RM|MT|lei|zł|USD|GBP|EUR|JPY|CHF|SEK|DKK|NOK|SGD|HKD|AUD|TWD|NZD|CNY|KRW|INR|CAD|VEF|EGP|THB|IDR|PKR|MYR|PHP|MXN|VND|CZK|HUF|PLN|TRY|ZAR|ILS|ARS|CLP|BRL|RUB|QAR|AED|COP|PEN|CNH|KWD|SAR)\b|\$[Ub]|[\p{Sc}ƒ]
  • Number regex : (?<!\d)(?<!\d\.)(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d{1,2})?(?!\.?\d)

货币取自World Currency Symbols ,模式中使用的 3 字母货币代码是最常用的,但也可以使用这些数据编制综合列表。

答案是

(?:\b(?:[BS]/\.|R(?:D?\$|p))|\b(?:[TN]T|[CJZ])\$|Дин\.|\b(?:Bs|Ft|Gs|K[Mč]|Lek|B[Zr]|k[nr]|[PQLSR]|лв|ден|RM|MT|lei|zł|USD|GBP|EUR|JPY|CHF|SEK|DKK|NOK|SGD|HKD|AUD|TWD|NZD|CNY|KRW|INR|CAD|VEF|EGP|THB|IDR|PKR|MYR|PHP|MXN|VND|CZK|HUF|PLN|TRY|ZAR|ILS|ARS|CLP|BRL|RUB|QAR|AED|COP|PEN|CNH|KWD|SAR)|\$[Ub]|[\p{Sc}ƒ])\s?(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d{1,2})?(?!\.?\d)

参见 regex demo

它是这样创建的:(?:CUR_SYM_REGEX)\s?NUM_REGEX , 由于已经定义了左侧上下文,因此从模式中删除了数字正则表达式中的 lookbehinds。

关于regex - 获取任何价格字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63964529/

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