首页 / 正则 / c# – 货币范围正则表达式
c# – 货币范围正则表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 货币范围正则表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1303字,纯文字阅读大概需要2分钟。
内容图文
![c# – 货币范围正则表达式](/upload/InfoBanner/zyjiaocheng/777/e1348a58730440c2b81d0dd689cd89d3.jpg)
我正在尝试使用正则表达式在字符串中查找格式正确的货币或数字的范围.我碰巧使用C#,因此正则表达式的格式是这样的.
例如,我希望能够找到:
$10,000,000 to $20M
$10k-$20k
100.23k - 200.34k
$20000 and $500600
3456646 to 4230405
它不应该匹配:
$10,0000,000 to $20,000,000 //extra zero in first number
20k xyz 40k //middle string does not match a range word
到目前为止,这是我的正则表达式:
(^|\s|\$)([1-9](?:\d*|(?:\d{0,2})(?:,\d{3})*)(?:\.\d*[1-9])?|0?\.\d*[1-9]|0)(|m|k)(?:|\s)(?:|to|and|-|,)(?:|\s)(|\$)([1-9](?:\d*|(?:\d{0,2})(?:,\d{3})*)(?:\.\d*[1-9])?|0?\.\d*[1-9]|0)(\s|m|k)
它似乎工作得相当好,但有时会匹配我不期望它的项目.例子:
1985 xyz 1999 //2 matches, both numbers without xyz
$10,000,000 xyz $20000000 //1 match on the $2000000
$10,000,0000 to $20,000,000 //1 match on the $10,000,0000 (extra zero on end)
我错过了什么?用正则表达式做这个是愚蠢的吗?
解决方法:
伙伴们,伙计
(?<=^|\s)\$?\d+((\.\d{2})?(k|M)|(,\d{3})*)\b\s*(to|-|and )\s*\$?\d*((\.\d{2})?(k|M)|(,\d{3})*)(\s|$)
在action看到它.
这部分
\d+((\.\d{2})?(k|M)|(,\d{3})*)
正在重演.所以最好将这个正则表达式保持在一个常数和连续状态.
String moneyPattern = @"\d+((\.\d{2})?(k|M)|(,\d{3})*)";
String rangeConnectorPattern = @"\b\s*(to|-|and\b)\s*";
String moneyRangePattern = @"(?<=^|\s)"+
moneyPattern + rangeConnectorPattern + moneyPattern +
"(\s|$)";
无需编写解析器.
内容总结
以上是互联网集市为您收集整理的c# – 货币范围正则表达式全部内容,希望文章能够帮你解决c# – 货币范围正则表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。