首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >RegEx用于匹配具有特殊模式的字符串[暂停]

RegEx用于匹配具有特殊模式的字符串[暂停]
EN

Stack Overflow用户
提问于 2019-05-27 02:02:52
回答 1查看 0关注 0票数 0

我正在尝试解析命令行。这就是问题:LQ,MM和FP与小吃一起疯狂,账单在LQ上。MM吃两个小吃,每个花费10美元,一个花费12美元,LQ吃两个花费10美元,而FP只有一个花费10美元。费用可以这样:

代码语言:javascript
复制
62|MM+2*3,LQ*2,FP 

其中62是总价。我需要在他们的特定对象中划分每个人必须支付的正确金额。如何只用一个Pattern来解决这个问题。甚至在这一点上,任何可能的解决方案对我都有帮助。记住+和*可以是任何用户。这就是我尝试过的

Pattern.compile(“^ [([\ d] +([\ d] {2}))\ |??? - (([AZ] {2}){1}([AZ] {2}) *)(\ S \ “(+?)\”)$“)?;

我的问题是如何为每个用户获得+2或* 3等单独的可选命令?

EN

回答 1

Stack Overflow用户

发布于 2019-05-27 11:10:28

我会假设操作人之后(例如LQ+2*3有效,但2*MM+3不是。)我也会假设+之前的操作*。不幸的是,没有办法拥有动态数量的捕获组,因此我假设有三个人。

有这些限制,(\d+)\|([A-Z]+)(\+\d+)?(\*\d+)?,([A-Z]+)(\+\d+)?(\*\d+)?,([A-Z]+)(\+\d+)?(\*\d+)?应该工作 - 捕获组是这样的:

1:开头的数字(62在您的情况下) 2:此人(MM在您的情况下) 3 :(可选)“+”符号后面的数字,前面加一个(+2在您的情况下) 4 :(可选) '*'后面的数字,*前面有一个(*3在你的情况下) 5以后:重复2-4 (例如你的情况下的群组['62', 'MM', '+2', '*3', 'LQ', '*2', 'FP']

但是,如果您想要具有动态人数的东西,最好的方法是简单地用逗号分割并解析每个人([A-Z]+)(\+\d+)?(\*\d+)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档