我想在字符串cc
到kk
的开头找到多行文本,并且必须包含字符串c3
和c4
,但不能包括字符串dd
或ee
,以下测试数据:
t1 b1 cc
c3 c4 z1
t3 dd kk
t4 b2 cc
c4 c3 z2
t6 ee kk
t7 b3 cc
c3 c4 z3
t9 ff kk
t7 b3 cc
c4 c3 z3
t9 ff kk
预期结果且仅限:
cc
c3 c4 z3
t9 ff kk
cc
c4 c3 z3
t9 ff kk
我写了一个正则表达式(C#),但不期望这个结果。
答案 0 :(得分:2)
在匹配每个单个字符之前,您需要使正则表达式引擎检查条件。
@"(?s)\bcc\b(?:(?!dd|ee).)*?\bkk\b"
(?:(?!dd|ee).)*?
应匹配dd
或ee
但不属于任何字符,零次或多次(非贪婪)。
\
更新
(?s)\bcc\b(?:(?!\bdd\b|\bee\b).)*?\bc3\b(?:(?!\bdd\b|\bee\b).)*?\bkk\b
答案 1 :(得分:1)