我正在处理的示例:
<doc_filename>file1.docx</doc_filename>
...other data...
<doc_filename>file2.ppx</doc_filename>
...other data...
...more doc_filenames...
我需要提取<doc_filename></doc_filename>
之间的内容。
我当前的尝试是使用带有正则表达式字符串的ExtractText:
[<][d][o][c][_][f][i][l][e][n][a][m][e][>](.*<)[/][d][o][c][_][f][i][l][e][n][a][m][e][>].*
如果只有一个<doc_filename>
,这很好用,但是如果没有int main(int argc, char* argv[]){
DIR* d;
struct dirent* dir;
char* surname = "Surname";
char* name = NULL;
d=opendir(".");
if(d){
while((dir=readdir(d))!=NULL){
name = realloc(name, strlen(d->name)+1); // Needs to be one char longer
// to account for the null terminator.
strcpy(name,dir->d_name);
printf("%s\n",name);
}
free(name);
clode(dir);
}
return 0;
}
,它的作用远超过结束标记。我已经进行了大量的谷歌搜索,但似乎无法找到一种方法。我是否丢失了某些内容,还是需要获取常规脚本来执行此处的所有处理?
注意:我稍后将使用这些文件名进行进一步处理。
谢谢!
答案 0 :(得分:0)
在ExtractText
处理器上,将包括捕获组0 设置为false
,将启用重复捕获组设置为true
,然后提供属性名称为 doc_filename (或其他名称)且值为(?<=<doc_filename>)(.*?)(?=</doc_filename>)
的动态属性(单击右上角的 + )。
正则表达式的工作方式如下:
(?<=<doc_filename>) // Look-behind group to require opening tag
(.*?) // Capture any characters, lazily
(?=</doc_filename>) // Look-ahead group to require closing tag
结果输出(基于您提供的示例输入)将为:
2019-01-25 13:15:55,379 INFO [Timer-Driven Process Thread-5] o.a.n.processors.standard.LogAttribute LogAttribute[id=01681000-d047-1f22-14da-f93157703ba1] logging for flow file StandardFlowFileRecord[uuid=6908e84b-182d-4ffc-95e4-2efe5af00911,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1548450895799-1, container=default, section=1], offset=1233, length=137],offset=0,name=6908e84b-182d-4ffc-95e4-2efe5af00911,size=137]
--------------------------------------------------
Standard FlowFile Attributes
Key: 'entryDate'
Value: 'Fri Jan 25 13:15:55 PST 2019'
Key: 'lineageStartDate'
Value: 'Fri Jan 25 13:15:55 PST 2019'
Key: 'fileSize'
Value: '137'
FlowFile Attribute Map Content
Key: 'doc_filename'
Value: 'file1.docx'
Key: 'doc_filename.1'
Value: 'file1.docx'
Key: 'doc_filename.2'
Value: 'file2.ppx'
Key: 'filename'
Value: '6908e84b-182d-4ffc-95e4-2efe5af00911'
Key: 'path'
Value: './'
Key: 'uuid'
Value: '6908e84b-182d-4ffc-95e4-2efe5af00911'
--------------------------------------------------
<doc_filename>file1.docx</doc_filename>
...other data...
<doc_filename>file2.ppx</doc_filename>
...other data...
...more doc_filenames...