正则表达式提取英国货币,包括英镑符号和便士 (p)

佩兹

我对 RegEx 相当陌生,并在网上进行了搜索,但无法找到符合我要求的正则表达式。

最终目标是搜索一串文本并提取最低的货币金额,但是由于该字符串可能包含不止一个金额,那么我很高兴正则表达式只提取它可以找到的所有货币值,然后我可以编写一个计算以返回最低金额。

该字符串可能包含不是货币价值/大量金额的数字,因此正则表达式应始终首先查找 £ 符号,或者它可以以“p”或“P”结尾来表示便士。例如,“我需要其中 2 个,每个 10 英镑,其中一个 50 便士” - 应该返回 10.00 和 0.50 - 然后我可以计算出 0.50 是最低金额。

由于人们也以各种方式写出他们的数量,我需要正则表达式能够发现不同的模式 - 包括“,”每千。以下所有值都应有效:

£0
£0.00
£0.00p
£0000
£0000.00
£0000.00p
£0,000
£0,000.00
£0,000.00p
0p

希望有人能够建议最好的方法来解决这个问题。

谢谢

猴子宙斯

这适用于您的数据集:

(?=^£|.*p$)£?\d*(?:,\d{3})*(\.\d{2})?p?

但它也可能不正确地匹配某些边缘情况,因为一切都是可选的......

https://regex101.com/r/WptUn6/3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么是在正则表达式“\\ p {}所有”的含义是什么?

负后置断言正则表达式与grep -P产生意外结果

命名正则表达式组“(?P <group_name> regexp)”:“ P”代表什么?

Java中的正则表达式字符串“ \\ p {Cntrl}”匹配什么?

NUMERIC(p,s)的正则表达式p =精度和s =比例

正则表达式\ p {L}和\ p {N}

正则表达式模式“ [\\ P {L}] +”在Java中是什么意思?

这个正则表达式是什么意思-“ \ p {Lu}”?

在正则表达式中将单词与英镑(#)符号匹配

Git checkout -p HEAD正则表达式搜索

JavaScript正则表达式没有\ p {L}吗?在JS正则表达式中使用Unicode

Javascript替换正则表达式除p,a和img之外的所有html标签

p#q#c#的R正则表达式

如何获取包含与正则表达式匹配的文本的<p>

如何定义正则表达式从价格字符串中提取货币符号?

正则表达式检查“ =“或“ |” 在(?<= P_MFG_PART_NUM \ =)和(?= \ | P | $)之间

Ruby on Rails 3.2.17 | 我如何为英国货币编写正则表达式

删除<p>标签-正则表达式(Regex)

正则表达式从英镑符号匹配到行尾

PHP正则表达式:尝试删除属性样式“ ...”,但仅除去<p>和<span>标记内的那些样式

* p ++和++ * p表达式的工作方式不同

正则表达式中<p>(。+?)<\ / p>和(?<= <p>)(。+?)(?= <\ / p>)之间有什么区别

带有 /P 的 Sed 正则表达式

货币 ISO 代码和符号的正则表达式

如何使用在 BeautifulSoup 中应用的正则表达式从 <p> 标签获取文本?

读取 -p 正则表达式验证

JavaScript:正则表达式用 DIV 替换 P

java中NUMERIC(p,s)的正则表达式是什么

正则表达式包括整数和以下符号 % , - 。$