java中的分层正则表达式
因此,我必须解析这个字符串并编写一个验证函数,这样lastYearFee和currentYearFee的总和应该与studentType 0的netChange匹配 在此示例中:对于0类学生,lastYearFee为10.00,currentYearFee为49.99,Netcharge为60.00。总数为59.99,与净费用不符。所以我必须在currentYearFee中加上0.01 我想到的解决办法。。 搜索去年费用、搜索当年费用、搜索和网络费用。检查差异并调整当前年度费用。但我不会为此编写正则表达式。假设这个结构从未改变,我们将如何编写解决方案 问题2: 挑战: 我得让逻辑有点泛化。。 我想写一个正则表达式来提取信息java中的分层正则表达式,java,regex,Java,Regex,因此,我必须解析这个字符串并编写一个验证函数,这样lastYearFee和currentYearFee的总和应该与studentType 0的netChange匹配 在此示例中:对于0类学生,lastYearFee为10.00,currentYearFee为49.99,Netcharge为60.00。总数为59.99,与净费用不符。所以我必须在currentYearFee中加上0.01 我想到的解决办法。。 搜索去年费用、搜索当年费用、搜索和网络费用。检查差异并调整当前年度费用。但我不会为此编写
{
schoolObject:{
schoolDetails:{
PrincipleId:5706980052,
isPaymentDone:false,
classId:"500720478039",
classDetails:[
{
classId:123591,
studentList:[
{
studentType:0,
categoryName:"",
lastYearFee:{
amount:10.00,
denomination:"INR"
},
currentYearFee:{
amount:49.99,
denomination:"INR"
}
},
{
studentType:1,
categoryName:"",
lastYearFee:{
amount:5.00,
denomination:"INR"
},
currentYearFee:{
amount:15.00,
denomination:"INR"
}
}
],
ItemId:1234567,
schoolInternalId:"976-345272383",
netAmount:{
amount:60.00,
denomination:"INR"
},
studentAccountId:953217682525
}
}
现在可以有多个条目,对于studentType 0,1,2。。。其中只有0。。。studentType:0本身中可以有多个条目。这里只有currentYearFee和lastYearFee。可以有更多注意:这看起来像JSON,但字段名称中没有双引号。我无法将其转换为JSON。我必须修改字符串 如果你不想重新发明轮子,你可以用Javascript引擎处理它(你的数据似乎是有效的js对象),并从中获取结果对象,用java处理它们。但我不确定我是否会这样做,这更像是一种黑客行为,而不是一个合适的解决方案。这必须在JAVA中完成。是的,这是一个短期的黑客行为。理想情况下,我永远不会修改字符串。我会使用像Fusion这样的表达式来修改它。但是Hack就是我要找的。如果它是一种潜在的递归语言,你就不能用正则表达式来解析它。您需要为它编写一个解析器。也许您可以找到一个JSON解析器,它可以容忍字段名中的引号。或者你可以使用antlr这样的工具自己编写一个简单的脚本。你知道Java中有一个Javascript引擎,不是吗?@saurabhagarwal我知道这必须用Java完成,这就是为什么我要谈论Javascript引擎。它们是标准java库的一部分。
studentList:[
{
studentType:0,
categoryName:"",
lastYearFee:{
amount:10.00,
denomination:"INR"
},
currentYearFee:{
amount:49.99,
denomination:"INR"
}
},
{
studentType:1,
categoryName:"",
lastYearFee:{
amount:5.00,
denomination:"INR"
},
currentYearFee:{
amount:15.00,
denomination:"INR"
}
}
]