Regex 匹配分隔符分隔的值并省略标题的第一行

Regex 匹配分隔符分隔的值并省略标题的第一行,regex,csv,Regex,Csv,我不太熟悉正则表达式,我正在从.dsv文件中匹配由半列分隔的所有值,如下所示: (.*?);(.*?);(\d+.*) 但是,我想跳过包含标题名称的第一行。我已经想出了这样一个与第一行相匹配的东西(或者我相信它是这样的): 我想以某种方式组合两个正则表达式,并确保分隔符分隔的值匹配不会涉及第一行,但我真的不确定如何进行 非常感谢您的帮助 一, 编辑: 我正在为regex使用Java语法您可以使用 (?m)(?!\A)^(.*?);(.*?);(\d+.*) 见 (?!\A)负前瞻将使^匹配所

我不太熟悉正则表达式,我正在从.dsv文件中匹配由半列分隔的所有值,如下所示:

(.*?);(.*?);(\d+.*)
但是,我想跳过包含标题名称的第一行。我已经想出了这样一个与第一行相匹配的东西(或者我相信它是这样的):

我想以某种方式组合两个正则表达式,并确保分隔符分隔的值匹配不会涉及第一行,但我真的不确定如何进行

非常感谢您的帮助

一,

编辑: 我正在为regex使用Java语法

您可以使用

(?m)(?!\A)^(.*?);(.*?);(\d+.*)


(?!\A)
负前瞻将使
^
匹配所有非第一行的行首(不是整个字符串,因为使用了
(?m)
内联多行修饰符)

对于使用NiFi的用户,您还可以通过我编写的一个简单Groovy脚本来决定运行脚本,该脚本在匹配分隔符分隔值后,在独立步骤中跳过第一行:

import org.apache.nifi.processor.io.StreamCallback
import java.nio.charset.StandardCharsets

def flowFile = session.get()
if (!flowFile) return

flowFile = session.write(flowFile, { inputStream, outputStream ->
    inputStream.eachLine { line, number ->
        if (number == 1)
            return
            outputStream.write(line.toString().getBytes(StandardCharsets.UTF_8))
        }
} as StreamCallback)

session.transfer(flowFile, REL_SUCCESS)

这是r?JAVApython?这与Java、R、python有什么关系?另外,您是否使用正则表达式解析表格数据?Python有
csv
。如果这是在Python中,请查看
csv
模块,您应该能够使用该模块完成所需的操作。为了澄清这一点,我正在使用正则表达式修改Apache NiFi中的流文件内容,它支持Java正则表达式语法。希望这能澄清一点。@inuendo你应该在问题中提出来。那里会更好。
import org.apache.nifi.processor.io.StreamCallback
import java.nio.charset.StandardCharsets

def flowFile = session.get()
if (!flowFile) return

flowFile = session.write(flowFile, { inputStream, outputStream ->
    inputStream.eachLine { line, number ->
        if (number == 1)
            return
            outputStream.write(line.toString().getBytes(StandardCharsets.UTF_8))
        }
} as StreamCallback)

session.transfer(flowFile, REL_SUCCESS)