如何使用PatternMatchingCompositeLineMapper在Spring批处理中实现复杂的模式匹配

时间:2015-06-09 16:29:49

标签: spring pattern-matching spring-batch

我们如何在Spring Batch中实现模式匹配,我正在使用org.springframework.batch.item.file.mapping.PatternMatchingCompositeLineMapper 我知道我只能使用?或*在这里创建我的模式。

我的要求如下: 我有一个固定长度的记录文件,在每个记录中我有第35和第36位的两个字段给出记录类型 例如下面" 05"是记录类型,位于第35和第36位,记录总长度为400。

0000001131444444444444445589868444050MarketsABNAKKAAAAKKKA05568551456 ...........

我试着编写正则表达式,但它不起作用,我知道只有两个特殊字符可以使用*和?

在这种情况下,我只能这样写 ?????????????????????????????????? 05 ????????????? .. ................

但它似乎不是一个好的解决方案。

请建议我如何编写此解决方案,非常感谢您提前帮助

1 个答案:

答案 0 :(得分:0)

PatternMatchingCompositeLineMapper使用org.springframework.batch.support.PatternMatcher的实例进行匹配。重要的是要注意PatternMatcher不使用真正的正则表达式。它使用更接近ant模式的东西(代码实际上是从Spring Core中的AntPathMatcher中解除的。)

话虽如此,您有三种选择:

  1. 使用您所指的模式(因为没有简短的方法来指定应该像正则表达式那样检查的?的数量。)
  2. 创建自己的复合LineMapper实现,该实现使用正则表达式进行映射。
  3. 对于记录,如果您选择选项2,那么回馈它将会受到赞赏!