Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 用正则表达式提取字符串_Java_Regex - Fatal编程技术网

Java 用正则表达式提取字符串

Java 用正则表达式提取字符串,java,regex,Java,Regex,我有一个字符串,比如: ITEM 'SALES_ORDER_COMPANY' ITEM 'SALES_ORDER_NUMBER' ITEM 'SALES_ORDER_TYPE' 'SALES_ORDER_TYPE' ITEM 'ORIGINATING_SYSTEM' ITEM 'BATCH_DT' 'BATCH_DT' CALCULATE 'some text here' ITEM 'INVOICE_DT' 'INVOICE_DT' CALCULATE 'some text here'

我有一个字符串,比如:

ITEM 'SALES_ORDER_COMPANY'

ITEM 'SALES_ORDER_NUMBER'

ITEM 'SALES_ORDER_TYPE' 'SALES_ORDER_TYPE'

ITEM 'ORIGINATING_SYSTEM'

ITEM 'BATCH_DT' 'BATCH_DT'
CALCULATE 'some text here'

ITEM 'INVOICE_DT' 'INVOICE_DT'
CALCULATE 'some text here'
我想提取项目,然后将
计算
分开,并将其他项目分开。 例如:

extract 1 (ITEM 'BATCH_DT' 'BATCH_DT'
           CALCULATE 'some text here')
extract 2 (ITEM 'INVOICE_DT' 'INVOICE_DT'
           CALCULATE 'some text here')
extract3  (ITEM 'SALES_ORDER_COMPANY')
extract4  (ITEM 'SALES_ORDER_NUMBER') ...
我的想法是先提取calculate后面的项目,并用“”替换它们,然后提取其他项目,所以我使用了这种模式,但它对我不起作用

Pattern p=Pattern.compile("^ITEM\\s'.*?'^CALCULATE'.*?'", Pattern.MULTILINE | Pattern.DOTALL);
我做到了

Pattern p=Pattern.compile("(^ITEM\\s.+?)^(?=ITEM|DATASOURCE)",Pattern.MULTILINE | Pattern.DOTALL);

您是否可以控制所接收数据字符串的生成?我从access表接收数据(每行都是一行),然后将其放入字符串中,除非我缺少某些内容您的数据似乎由双换行符(\n\n)分隔,你甚至不需要复杂的正则表达式this@gerrytan这就是为什么我使用带有锚点的模式多行^?