Java 用于奇数货币价值的正则表达式
我有一个包含奇数货币值的字符串。字符串为:Java 用于奇数货币价值的正则表达式,java,regex,Java,Regex,我有一个包含奇数货币值的字符串。字符串为: 每日利息费用#901美元17.2789 259.18 190.07/天 奇数值为17.2789美元 我正在尝试创建一个正则表达式,它将获得is,但没有back引用。这就是我想到的: (?:\\$\\s*?\\d{0,1,2,3}\\\\\d{0,1,2,3,4}\\s*?/?天) 但是,这不会编译。那里的一切对我来说都合理吗?你知道这有什么问题吗?我正在使用Java 编辑 我试过m.buettner关于\\$\\s*\\d*\\.\\d*的建议。我把它
每日利息费用#901美元17.2789 259.18 190.07/天
奇数值为17.2789美元
我正在尝试创建一个正则表达式,它将获得is,但没有back引用。这就是我想到的:
(?:\\$\\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{1,3}[,]?)*(?:\。\d+)\s*(?:-\()(?:-\())(?:\d{1,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
之前还有一些其他数字。因此,即使它编译,它也不会匹配您的价格值。您可能应该将\\s*?/?天
全部省略。并考虑删除外部的?
。正如Brian在评论中所说,没有必要取消对\\s
重复的冻结,因为它与以下元素是互斥的:
\\$\\s*\\d{0,3}\\.\\d{0,4}
如果数值是“奇数”的话,你真的需要对数字的数量如此具体吗
据我所知,
\\d{0,1,2,3…}
的语法无效。你的意思可能是:
(?:\\$\\s*?\\d{0,3}\\.\\d{0,4}\\s*?/?day)?
另外,您是否知道您的整个模式是可选的?这带来了一个问题<代码>\\d{0,3}\.\\d{0,4}将只匹配第一个(奇数)数字。然后,您有一个可选的斜杠,但必须有一个天
(如果没有删除整个模式)。但是在您的输入字符串中,在遇到/day
之前还有一些其他数字。因此,即使它编译,它也不会匹配您的价格值。您可能应该将\\s*?/?天
全部省略。并考虑删除外部的?
。正如Brian在评论中所说,没有必要取消对\\s
重复的冻结,因为它与以下元素是互斥的:
\\$\\s*\\d{0,3}\\.\\d{0,4}
如果数值是“奇数”的话,你真的需要对数字的数量如此具体吗
这种模式
“\\d+\.\\d{3,}”
将每个数字与点后2位以上的数字匹配。此模式
“\\d+\.\\d{3,}”
将每个数字与点后超过2位的数字匹配。是的,它只是较大数字的一小部分,图中更易于可读。谢谢,让我试一试。+1,打败我:)也不是说
\\s*?
是多余的,\\s*
本身就可以了。我知道,但后面的字符永远不会是另一个空格字符,所以不管它有多贪婪。@m.buettner对不起,我是说奇怪中的奇数,而不是奇数。我甚至没有意识到。@m.buettner试过你的建议。99%在那里。请看我的编辑是的,它只是一个较大版本中的一小部分,我想它更易于阅读。谢谢,让我试一试。+1,打败我:)也不是说\\s*?
是多余的,\\s*
本身就可以了。我知道,但后面的字符永远不会是另一个空格字符,所以不管它有多贪婪。@m.buettner对不起,我是说奇怪中的奇数,而不是奇数。我甚至没有意识到。@m.buettner试过你的建议。99%在那里。请参阅我的编辑您的量词(例如,{0,1,2,3}
)看起来不正确,除非这是我不熟悉的变体。量词通常表示为{x}
,{x,}
,或{x,y}
。你的意思是“奇数”还是“不可被二整除”或“奇怪”?哎呀,对不起,我看到了混淆,我的意思是奇数还是奇怪。它的小数精度为4位。@user489041如果不捕获“奇数”价格值,那么匹配它有什么意义?为什么不跳过它呢?例如,对于给定的字符串,这个正则表达式将为您提供所需的捕获:(.*\S)\S*\S*(\d{3,4})。*\d(\d*\.\d*)\S+(\d*\.\d*)/day
。但当然,对于输入的整个结构,它的具体程度要低得多。如果你告诉我们你的输入中有什么可以改变,哪些参数必须相同,那会有帮助。你的量词(例如{0,1,2,3}
)看起来不正确,除非是我不熟悉的变化。量词通常表示为{x}
,{x,}
,或{x,y}
。你的意思是“奇数”还是“不可被二整除”或“奇怪”?哎呀,对不起,我看到了混淆,我的意思是奇数还是奇怪。它的小数精度为4位。@user489041如果不捕获“奇数”价格值,那么匹配它有什么意义?为什么不跳过它呢?例如,对于给定的字符串,这个正则表达式将为您提供所需的捕获:(.*\S)\S*\S*(\d{3,4})。*\d(\d*\.\d*)\S+(\d*\.\d*)/day
。但当然,对于输入的整个结构,它的具体程度要低得多。如果您能告诉我们您的输入和输出中真正不同的是什么,这会有所帮助