Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java拆分保留delimeters、换行符和回车符_Java_Regex_Apache Camel - Fatal编程技术网

Java拆分保留delimeters、换行符和回车符

Java拆分保留delimeters、换行符和回车符,java,regex,apache-camel,Java,Regex,Apache Camel,我正在使用apachecamel使用regex分割文件流。我需要保留delimeters,因此我使用以下正则表达式: (?=\r\n[0-9]{2}00)用于带回车符的windows换行符 但是,我希望同时支持Windows和Linux换行符,因此我认为类似的方法应该可以工作: (?=\r?\n[0-9]{2}00)甚至(?=(\r\n}\n)[0-9]{2}00) 但是出于某种原因,执行上面的任何一个选项都会给我一些带有空值的输出,因此当我需要运行一些子字符串时,它会中断,等等 我还测试了其他

我正在使用apachecamel使用regex分割文件流。我需要保留delimeters,因此我使用以下正则表达式:

(?=\r\n[0-9]{2}00)
用于带回车符的windows换行符

但是,我希望同时支持Windows和Linux换行符,因此我认为类似的方法应该可以工作:

(?=\r?\n[0-9]{2}00)
甚至
(?=(\r\n}\n)[0-9]{2}00)

但是出于某种原因,执行上面的任何一个选项都会给我一些带有空值的输出,因此当我需要运行一些子字符串时,它会中断,等等

我还测试了其他选项,如:

(?=。\n[0-9]{2}00)
(?=^[0-9]{2}00)
(我将换行符保留在prev组上)

但对于其中任何一个,我在开始或结束时都会得到一个空输出

编辑:添加了骆驼路线

<route id="FileRoute" trace="false">
    <from uri="file:{{file.path}}?move=.done&amp;readLock=changed&amp;readLockCheckInterval=1500&amp;charset=UTF-8"/>

    <split streaming="true" stopOnException="true" shareUnitOfWork="true" parallelProcessing="true">
        <tokenize token="(?=\R[0-9]{2}00)" regex="true" />

        <setHeader headerName="CamelSplitIndex">
            <!-- line number basically -->
            <simple>${property.CamelSplitIndex}</simple>
        </setHeader>
        <setHeader headerName="CamelSplitComplete">
            <!-- did I read the last line? -->
            <simple>${property.CamelSplitComplete}</simple>
        </setHeader>

        <log message="Line: ${property.CamelSplitIndex}: BODY: ${body}"/>

        <choice>
            <when>
                <simple>${property.CamelSplitIndex} == 0</simple>
                <!-- skip first line as its a header -->
            </when>
            <otherwise>

                <setProperty propertyName="StringFound">
                    <simple>${body.substring(5,24).trim()}</simple>
                </setProperty>

                <setHeader headerName="ModifiedStringFound">
                    <simple>${property.StringFound}</simple>
                </setHeader>

                <process ref="ProcessName"/>

                <transform>
                    <simple>${body.replace(${property.StringFound}, ${header.ModifiedStringFound})}</simple>
                </transform>

                <removeHeader headerName="ModifiedStringFound"/>

            </otherwise>
        </choice>

        <aggregate strategyRef="AggregationStrategy" completionTimeout="15000">
            <correlationExpression>
                <simple>${in.header.CamelFileName}</simple>
            </correlationExpression>
            <completionTimeout>
                <header>timeout</header>
            </completionTimeout>
            <to uri="log:com.blah.blah.out"/>
        </aggregate>

    </split>

</route>

知道如何解决这个问题吗?

使用
“\\R”
\R
)匹配任何换行符序列。@WiktorStribiżew同样的问题
调用方法失败:由于:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:24
,代码出现了一些问题。@Fede。StringIndexOutOfBoundsException与此正则表达式无关。您能否提供额外的代码(包括可能的输入和预期的输出),其中使用这个正则表达式和子字符串来更好地理解您所遇到的问题的全貌?只需忽略前瞻
中的
\r
(?=\n[0-9]{2}00)
就行了吗?(结尾是多余的\r。)
78643756435694369    4754757864254578754578545457                                                                                                                0071
05007684546545465745     1740266981415800014580631000874120180521185558     000000000247986DFGBDFH FDGDGJHUHJK   SDFGSGDFGf      GT 541100898  00710047503051 0220180522
0501            000000  000000000000                                     046    00000103971056242218759000000000000 000000000000 000000                    00000000000  
0502            GH    001000000000000000000                                                                                                                             
05005212455451257521     1740266981415800001820031000874120180521183349     000000001817986FGHDFHFGJFGDHGDFDFH        FDGFDHGFDHDFH 541100898  00710043090051 0220180522
0501            000000  000000000000                                     046    00000100293449142130526000000000000 000000000000 000000                    00000000000  
0502            FD    001000000000000000000                                                                                                                             
05009789265762578888     1740266981415800012612361003716920180521173412     000000004859986DFHDGJFGJFGJKHGJGHJ   GDHFGHFGHFGH 541100898  00710029706451 0220180522
0501            000000  000000000000                                     046    00000103058175142271046000000000000 000000000000 000000                    00000000000  
0502            AR    001000000000000000000                                                                                                                             
05008758407825904958     1740266981415800004933011003716920180521173559     000000000798986FGHGFGHRTUJHGJDGHYHTJK    DHDGJFHJHFHJ    NJ 541100898  00710030461251 0220180522
0501            000000  000000000000                                     046    00000100902124678647109000000000000 000000000000 000000                    00000000000  
0502            TY    001000000000000000000                                                                                                                             
05004987785686893465     1740266981415800003253131003716920180521174415     000000001142986FDGFDGHFGJTYUJDFHGDEHGTGFH     DFHDYRT     BG 541100898  00710032033851 0220180522
0501            000000  000000000000                                     046    00000100620274678526079000000000000 000000000000 000000                    00000000000  
0502            UI    001000000000000000000