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