这是我的文字结构
@2015
CSV,,,,,sfs,sdf,s,,ssdf,sf
@2015
ABC|@##%@
BCD|||asdf|45d|t
DEF|||sdfgs|45d|t
EFG|||assdfgdf|45d|t
@2015
ABC|@##%@
ZXY|zz|rwe2342345|unwanted|
--------------
@2015
CSV,,,,,sfs,sdf,s,,ssdf,sf
@2015
ABC|@##%@
BCD|||asdf|45d|t
DEF|||sdfgs|45d|t
EFG|||assdfgdf|45d|t
@2015
ABC|@##%@
ZXY|zz|rwe2342345|wanted|
--------------
@2015
CSV,,,,,sfs,sdf,s,,ssdf,sf
@2015
ABC|@##%@
BCD|||asdf|45d|t
DEF|||sdfgs|45d|t
EFG|||assdfgdf|45d|t
@2015
ABC|@##%@
ZXY|zz|rwe2342345|unwanted|
到目前为止我的RegEx
CSV(.*\n)+?ZXY.*\|wanted\|
使用TextCrawler我得到了这个结果(找到了1个结果)它包含了不需要的组。
1) CSV,,,,,sfs,sdf,s,,ssdf,sf
@2015
ABC|@##%@
BCD|||asdf|45d|t
DEF|||sdfgs|45d|t
EFG|||assdfgdf|45d|t
@2015
ABC|@##%@
ZXY|zz|rwe2342345|unwanted|
--------------
@2015
CSV,,,,,sfs,sdf,s,,ssdf,sf
@2015
ABC|@##%@
BCD|||asdf|45d|t
DEF|||sdfgs|45d|t
EFG|||assdfgdf|45d|t
@2015
ABC|@##%@
ZXY|zz|rwe2342345|wanted|
我真的只想捕获从CSV到包含字符串| want |的ZXY行的组(非贪婪的比赛)。如何修改我的正则表达式来实现这一目标?我正在使用.Net正则表达式。
编辑:预期结果是一个像这样的文本块
CSV,,,,,sfs,sdf,s,,ssdf,sf
@2015
ABC|@##%@
BCD|||asdf|45d|t
DEF|||sdfgs|45d|t
EFG|||assdfgdf|45d|t
@2015
ABC|@##%@
ZXY|zz|rwe2342345|wanted|
答案 0 :(得分:2)
这应该这样做:
CSV((?!\-{14})[\s\S])*?\|wanted\|
((?!\-{14})[\s\S])*?
基本上表示任意数量的字符前面没有14个破折号(这里是部分分隔符)。它是预测交易的负面前瞻(?!\-{14})