将字符串与可选数据匹配

时间:2016-06-22 22:50:42

标签: java regex

我正在尝试将以下两个String对象与正则表达式匹配。我正在分组并从第一个String中拉出值3.00,4.00,100.00;它工作正常。但是,我有很多String个对象,并不是全部包含第三个组,所以我想将该组保留为可选。因此,我为该组添加了?以使其成为可选项。然而它并没有什么区别,没有第三组部分的任何String都与我的正则表达式不匹配。

如何让第三组可选?关于我的正则表达式是否可以更好地格式化,是否有任何建议?谢谢!

正则表达式

cost{"([0-9]+\.[0-9]+)[0-9"{]},+[a-zA-Z0-9]+{"+([0-9]+\.[0-9]+)[0-9A-Za-z"},{[\]\._-]+:price{"([0-9]+\.[0-9]+)?

匹配的字符串1,因为它具有第三组值

cost{"3.00{},asdjdfhjkf23hawoutcome{"4.00"},79234gh3k2bdfsfgs2323g23jkg23{[]._-,bonus:price{"100.00"}jksdfjksdf222sdcfszfSDAWFD;

字符串2不匹配,因为它没有第三组值

cost{"5.00{},asdjdfhjkf23hawoutcome{"36.00"},79234gh3k2bdfsfgs2323g23jkg23{[]._-,jksdfjksdf222sdcfszfSDAWFD;

1 个答案:

答案 0 :(得分:0)

您必须将第3组的所有包装在括号中才能使其正常工作。我不确定你的意思是什么,但只是继续他们所包含的内容,这就是你的正则表达式应该如何看待:

   tr.has-border-top>td {
        border-top: 1px solid black
   }

注意最后一点的cost{"([0-9]+\.[0-9]+)[0-9"{]},+[a-zA-Z0-9]+{"+([0-9]+\.[0-9]+)[0-9A-Za-z"},{[\]\._-]+(:price{"([0-9]+\.[0-9]+))? - 这就是正则表达式将整个事物视为一个单元的原因。否则,它只会查看最后一个逻辑部分并查看最后一个(),而不是所有要忽略的部分。