Java 如何解析带有多个分隔符的文件

Java 如何解析带有多个分隔符的文件,java,Java,我需要解析这种格式的文件,这样我就可以通过避免换行符或/n,回车0r/r,^^空格来获取/获取代替这些标记的值。只要给我一个示例代码的想法,这样它就可以帮助我继续 ^^^ M^^^^康普尔德 ^^^[,]:,,, [], [], [], [] [, ] [:[], [] [, [,]] [:[][,]]]* ; 假设响应是这种类型的:我需要获取每个字段值 RTRV-HDR:::RH01; [2K 模拟机09-11-1813:49:03 M RH01组件 ; 代理>RTRV-EQPT::全部:R

我需要解析这种格式的文件,这样我就可以通过避免换行符或/n,回车0r/r,^^空格来获取/获取代替这些标记的值。只要给我一个示例代码的想法,这样它就可以帮助我继续

^^^ M^^^^康普尔德 ^^^[,]:,,, [], [], [], [] [, ] [:[], [] [, [,]] [:[][,]]]* ;

假设响应是这种类型的:我需要获取每个字段值

RTRV-HDR:::RH01; [2K

模拟机09-11-1813:49:03 M RH01组件 ; 代理>RTRV-EQPT::全部:RE01; [2K

模拟机09-11-1813:49:04 M RE01 COMPLD 插槽-1-1-1,CMP:IS-NR 插槽1-1-2,CMP:IS-NR 插槽1-1-3,OLC:IS-NR 插槽1-1-4,OLC:IS-NR 插槽1-1-5,OLC:IS-NR 插槽1-1-6,OLC:IS-NR 插槽1-1-7,OLC:IS-NR 插槽1-1-8,OLC:IS-NR 插槽1-1-9,国际奥委会:IS-NR 插槽1-1-10,国际奥委会:IS-NR 插槽1-2-1,NMC:IS-NR 插槽1-2-2,NMC:IS-NR 插槽1-2-3,OLC:IS-NR 插槽1-2-4,OLC:IS-NR 插槽1-2-5,OLC:IS-NR 插槽1-2-6,OLC:IS-NR 插槽1-2-7,OLC:IS-NR 插槽1-2-8,OLC:IS-NR ; 代理>RTRV-ALM-EQPT::全部:RA01; [2K

模拟机09-11-1813:49:05 M RA01 COMPLD 插槽1-1-1,CMP:MN,T-FANCURRENT-1-HIGH,NSA,01-10-09,00-00-00,,:\Fan-T\,, 插槽-1-1-1,CMP:MJ,T-BATTERYPWR-2-LOW,NSA,01-10-09,00-00-00,,:\Battery-T\,, 插槽1-1-2,CMP:CR,程序失败,SA,09-11-18,13-48-54,,:\Processor Failure\, 插槽1-1-3,OLC:MN,T-LASERCURR-1-HIGH,SA,01-10-07,13-21-03,,:\Laser-T\,, 插槽1-1-3,OLC:MJ,T-LASERCURR-2-LOW,NSA,01-10-02,21-32-11,:\Laser-T\,, 插槽1-1-4,OLC:MN,T-LASERCURR-1-HIGH,SA,01-10-05,02-14-03,,:\Laser-T\,, 插槽1-1-4,OLC:MJ,T-LASERCURR-2-LOW,NSA,01-10-04,01-03-02,,:\Laser-T\,, ; 代理>RTRV-ALM-EQPT::ALL:RA02::MJ,; [2K

模拟机09-11-1813:49:06 M RA02 COMPLD 插槽-1-1-1,CMP:MJ,T-BATTERYPWR-2-LOW,NSA,01-10-09,00-00-00,,:\Battery-T\,, 插槽1-1-3,OLC:MJ,T-LASERCURR-2-LOW,NSA,01-10-02,21-32-11,:\Laser-T\,, 插槽1-1-4,OLC:MJ,T-LASERCURR-2-LOW,NSA,01-10-04,01-03-02,,:\Laser-T\,, ; 代理>RTRV-ALM-EQPT::ALL:RA03::MN,; [2K

模拟机09-11-1813:49:06 M RA03 COMPLD 插槽1-1-1,CMP:MN,T-FANCURRENT-1-HIGH,NSA,01-10-09,00-00-00,,:\Fan-T\,, 插槽1-1-3,OLC:MN,T-LASERCURR-1-HIGH,SA,01-10-07,13-21-03,,:\Laser-T\,, 插槽1-1-4,OLC:MN,T-LASERCURR-1-HIGH,SA,01-10-05,02-14-03,,:\Laser-T\,, ; 代理>RTRV-ALM-EQPT::ALL:RA04::MN,T-LASERCURR-1-高; [2K

模拟机09-11-1813:49:10 M RA04 COMPLD 插槽1-1-3,OLC:MN,T-LASERCURR-1-HIGH,SA,01-10-07,13-21-03,,:\Laser-T\,, 插槽1-1-4,OLC:MN,T-LASERCURR-1-HIGH,SA,01-10-05,02-14-03,,:\Laser-T\,, ; 代理>RTRV-PM-EQPT::全部:RP01; [2K

模拟机09-11-1813:49:11 M RP01 COMPLD 插槽-1-1-1,CMP:FANCURRENT-1180.080,,,,, 插槽-1-1-1,CMP:FANCURRENT-2204.660,,,,, 插槽-1-1-1,CMP:FANCURRENT-3230.500,,,,, 插槽-1-1-1,CMP:FANCURRENT-4187.580,,,,, 槽-1-1-1,CMP:BATTERYPWR-1,53.650,,,,, 槽-1-1-1,CMP:BATTERYPWR-2,53.650,,,,, 插槽1-1-2,CMP:FANCURRENT-1180.080,,,,, 插槽-1-1-2,CMP:FANCURRENT-2204.660,,,,, 插槽-1-1-2,CMP:FANCURRENT-3230.500,,,,, 插槽-1-1-2,CMP:FANCURRENT-4187.580,,,,, 槽-1-1-2,CMP:BATTERYPWR-1,53.650,,,,, 槽-1-1-2,CMP:BATTERYPWR-2,53.650,,,,, 插槽1-1-3,OLC:LASERPWR-1200.00,,,,, 插槽1-1-3,OLC:LASERPWR-2200.00,,,,, 插槽1-1-4,OLC:LASERPWR-1200.00,,,,, 插槽1-1-4,OLC:LASERPWR-2200.00,,,,, 插槽1-1-5,OLC:LASERPWR-1200.00,,,,, 插槽1-1-5,OLC:LASERPWR-2200.00,,,,, 插槽1-1-6,OLC:LASERPWR-1200.00,,,,, 插槽1-1-6,OLC:LASERPWR-2200.00,,,,, 插槽1-1-7,OLC:LASERPWR-1200.00,,,,, 插槽1-1-7,OLC:LASERPWR-2200.00,,,,, 插槽1-1-8,OLC:LASERPWR-1200.00,,,,, 插槽1-1-8,OLC:LASERPWR-2200.00,,,,, 插槽1-2-3,OLC:LASERPWR-1200.00,,,,, 插槽1-2-3,OLC:LASERPWR-2200.00,,,,, 插槽1-2-4,OLC:LASERPWR-1200.00,,,,, 插槽1-2-4,OLC:LASERPWR-2200.00,,,,, 插槽1-2-5,OLC:LASERPWR-1200.00,,,,, 插槽1-2-5,OLC:LASERPWR-2200.00,,,,, 插槽1-2-6,OLC:LASERPWR-1200.00,,,,, 插槽1-2-6,OLC:LASERPWR-2200.00,,,,, 插槽1-2-7,OLC:LASERPWR-1200.00,,,,, 插槽1-2-7,OLC:LASERPWR-2200.00,,,,, 插槽1-2-8,OLC:LASERPWR-1200.00,,,,, 插槽1-2-8,OLC:LASERPWR-2200.00,,,,, ; agent>INIT-SYS::SLOT-1-1-2:IS01::1; [2K

模拟机09-11-1813:49:11 M IS01 COMPLD ; 代理>


感谢所有有价值的回复

您的问题很短,因此很难猜出您的意思,但使用a可能会有所帮助。

我认为您应该有一个动态聚合器,它将输入的内容和连贯的行粘在一起,使您的表达式更容易在这些行上执行。F.ex.您可以有一个迭代器用你写的那些行包装另一个迭代器的r,寻找连贯的行并将它们存储在StringBuffer中。当你找到所有连贯的行形成一行时,你在下一个方法中返回它。

我认为你应该使用StringTokenizer

字符串s=; StringTokenizer st=new StringTokenizeryourString,-\n;//您可以添加分隔符 而!圣哈斯莫尔代币{ s+=圣东北 xtToken+\n; }
你正在使用哪个定界符,或者至少提到预期结果。是的,我正在使用流标记器,但这不是一个好的解决方案,因为我不知道每次将获得多少字段的值作为输出。你仍然可以在这里使用流标记器,你只需要通过解析新记录开始的数据来决定。