Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 谁能帮我写一个正则表达式?_C#_.net_Regex - Fatal编程技术网

C# 谁能帮我写一个正则表达式?

C# 谁能帮我写一个正则表达式?,c#,.net,regex,C#,.net,Regex,我想在字符串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#),但这不是预期的结果。

我想在字符串
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#),但这不是预期的结果。

在匹配每个字符之前,需要让正则表达式引擎检查条件

@"(?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
试试这个

cc(?:\s(?!dd|ee)\w{2})*\skk

说明:
(?:…)
:非捕获组
\s
:“空白字符”:空格、制表符、换行符、回车符、垂直制表符
(?!…)
:负前瞻
|
:交替/或操作数
\w
:“单词字符”:ASCII字母、数字或下划线
*
:零次或多次


(?!dd | ee)\w{2}
2个字符,但
dd
ee

@MikeMB增加了一位。您可以在我所附的演示链接的右侧看到每个正则表达式模式的解释。如果对这个解释有任何疑问,请随时问我。为了更准确,我更新了这个问题。请您再帮我一次忙好吗?然后用
\d
替换
3
(匹配任何数字字符),如
(?!\bdd\b\bee\b.)*?\bc\d\b(?(?!\bdd\b\bee\b.)*?\bkk\b
如果需要c3和c4,请用
\34]替换
\d