regex - 正则表达式提取英国货币,包括英镑符号和便士 (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?
但它也可能与某些边缘情况不匹配,因为一切都是可选的......
推荐阅读
- system-verilog - 在 SystemVerilog / DPI 中键入擦除
- javascript - 如何按日期对数组进行排序但缺少第一个数组项
- android - 用户列表为空
- r - 绘制包含样本大小和功效估计值的图表
- google-apps-script - 关于 AdminDirectory.Orgunits.update 方法的问题
- c# - 将 Command.ExecuteScalar() 转换为 Int
- arrays - 将参数传递给 slurm 脚本
- jetty - RequestLog 在 jetty 9.4 中没有实现 LifeCycle
- python-3.x - 如何从文本文件中打印一行的特定部分?
- netlogo - 如何在 Netlogo 中将 Z 分数转换为概率?