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