Regex 解析段落并将其作为DB记录插入

Regex 解析段落并将其作为DB记录插入,regex,parsing,paragraph,Regex,Parsing,Paragraph,我正在尝试将记录插入mysql数据库。我有多个段落的文本文件,一个段落必须是一个db记录 我的数据库有5列-职业、经验、部门、被保险人、备注 我的文本文件有以下格式-我有一个perl代码监视这些文本文件存储的目录。问题是,可能有两种职业价值观,也可能只有一种。直到现在,当format只有一个占领值时,我开始从第n个索引读取文件数组,提取循环中偏移量为5的所有内容,使一个段落成为记录 格式不会改变,它将是以下两段的组合。如何将这些段落单独放入一个数组中进行db insert?谢谢~拉尔夫 ###文

我正在尝试将记录插入mysql数据库。我有多个段落的文本文件,一个段落必须是一个db记录

我的数据库有5列-职业、经验、部门、被保险人、备注

我的文本文件有以下格式-我有一个perl代码监视这些文本文件存储的目录。问题是,可能有两种职业价值观,也可能只有一种。直到现在,当format只有一个占领值时,我开始从第n个索引读取文件数组,提取循环中偏移量为5的所有内容,使一个段落成为记录

格式不会改变,它将是以下两段的组合。如何将这些段落单独放入一个数组中进行db insert?谢谢~拉尔夫

###文件开头
标题
职业:分析员3。
经验:7
部门:ZAD6A。
投保人:0
备注:无
职业:分析师2。
职业:一级工程师。
经验:4
部门:50021。
投保人:0
备注:新员工。
页脚
###文件结束
#通过一行或多行空行将输入字符串拆分为块
my@blocks=split/\n{2,}/,$input;
#通过移动@blocks的索引跳过页眉和页脚
#获取同一块中“:”之后的所有值
#如果大小=6,则合并重复占用的数组的第1个值和第2个值
my@results=map{{$}==6?[“$$$>[0]:$$$\>[1],@{$\}[2..5]:$}
映射{[/:\s*([^\n]+)/g]}@blocks[1..$#blocks-1];

那么,如果文件中有两个职业,您想怎么办?我将在数据库的职业字段中连接职业值。感谢您在Alec中投稿!所以我可以有类似于..TextFile1_-Arr[0]={Analyst3.,7,ZAD6A.,0,None}…TextFile1_-Arr[1]={Analyst2.:Engineer-I.,450021.,0,New-Hire.}..等等的文本文件2..textfile3..等等。谢谢Alec..必须尝试一下..但是这可以用正则表达式来完成吗?我事先知道块的数量(块的数量在文件名中)。这样我就可以循环通过任何一个块。现在,什么样的正则表达式可以捕获一个块?从占领开始到遇到下一个占领之前开始捕获?页眉和页脚在所有文件中都是常量。请尝试此
$input=~/(职业+?)(?=\n{2,})/sgAlec..这只是捕获最后一个职业,跳过其他所有职业。