- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含奇怪货币值的字符串。该字符串是:
每日利息费用#901 $ 17.2789 259.18 190.07/天
奇数值是$ 17.2789
我正在尝试创建一个正则表达式,它将得到 is,但没有反向引用。这是我想到的:
(?:\\$\\s*?\\d{0,1,2,3}\\.\\d{0,1,2,3,4}\\s* ?/?日)?
但是这不会编译。里面的一切对我来说似乎都很合理?知道它可能有什么问题吗?我正在使用 Java
编辑
我已经尝试了 m.buettner 建议的 \\$\\s*\\d*\\.\\d*
。我把它放在下面的第三组中。这几乎就可以做到。这是我的完整正则表达式:
(.*)\s?#(\s?\d{3,4})\s*(?:\$\s*\d*\.\d*)?((? :-|\()?\$?(?:\d{1,3}[ ,]?)*(?:\.\d+)\)?)\s*((?:-|\() ?\$?(?:\d{1,3}[ ,]?)*(?:\.\d+)\)?).*
它拉取的组是:
问题出在分组 3 上。它包含一个额外的数字,第一个 9
编辑编辑
有一个空格导致了这个问题,这样做了:
(?:\$\s*\d*\.\d*\s)?
最佳答案
据我所知 \\d{0,1,2,3...}
不是有效的语法。你的意思可能是:
(?:\\$\\s*?\\d{0,3}\\.\\d{0,4}\\s*?/?day)?
另外,您是否知道您的整个模式是可选的?这就带来了一个问题。 \\d{0,3}\\.\\d{0,4}
将仅匹配第一个(奇数)数字。然后你有一个可选的斜杠,但有一个强制性的day
(如果整个模式没有被删除)。但在您的输入字符串中,在遇到 /day
之前还有一些其他数字。所以即使它能编译,它也不会符合你的价格值(value)。您可能应该完全省略 \\s*?/?day
。并考虑删除外部 ?
。正如 Brian 在评论中所说,没有必要使 \\s
重复变得不贪婪,因为它和以下元素无论如何都是互斥的:
\\$\\s*\\d{0,3}\\.\\d{0,4}
如果该值是“奇数”,您真的必须如此具体地指定位数吗?
\\$\\s*\\d*\\.\\d*
关于java - 奇数货币值(value)的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634372/
我是一名优秀的程序员,十分优秀!