繁体   English   中英

C#正则表达式麻烦

[英]c# Regex trouble

我的正则表达式有点麻烦。

String a = @"{target=}jump";
String b = "continue";
String c = "jump";
String d = @"{target=intro}jump";
String e = "prev";
String f = @"{target=}choice";
String g = @"{target=intro}choice";
String h = "choice";
String i = "previous";
String j = @"{target=intro}continue";
String k = "cont";
String l = @"{target=}continue";
Regex regex = new Regex(@"(^{target=(\w.*)}(choice|jump))|(^[^.]*(continue|previous))");
var a_res = regex.IsMatch(a);
var b_res = regex.IsMatch(b);
var c_res = regex.IsMatch(c);
var d_res = regex.IsMatch(d);
var e_res = regex.IsMatch(e);
var f_res = regex.IsMatch(f);
var g_res = regex.IsMatch(g);
var h_res = regex.IsMatch(h);
var i_res = regex.IsMatch(i);
var j_res = regex.IsMatch(j);
var k_res = regex.IsMatch(k);
var l_res = regex.IsMatch(l);

基本上,我需要的是在出现选择或跳转时进行匹配,以{target =}开头=后面的任意数量的字符。 并且,如果存在continue或previous,则也要匹配,但前提是它们没有进行任何处理。

因此,A =假,b =真,c =假,d =真,e =假,f =假,g =真,h =假,i =真,j =假,k =假和l =假,

通过上面的正则表达式,我可以正确读取j和l以外的所有内容。

谁能帮忙吗?

我想你要更换

{target=(\w.*)}

{target=[^}]*}

这允许在“ target =“之后的任意数量的非}字符。

编辑:其实,您能说明一下您的意思吗? 我从上下文中收集到

“ A =假,b =真,c =假,d =真,e =假,f =假,g =真,h =假,i =真,j =假,k =假和l =假”

预期值(而不是实际值。为了更清晰起见,您应该明确提及这一点)。 但是根据您的口头描述,l (更正:a和f)应该为真,而不是假。

另外,我正在“一次修复一个错误”的基础上。 尽管根据您的口头描述,j应该为false,但我的正则表达式仍然使j为true。 我将在不久后再次进行编辑。

编辑2:我相信你所追求的是

^({target=[^}]+}(choice|jump)|continue|previous)

编辑3:很抱歉编辑了这么多次,但是我要提一下,在=之后使用第一个}是一种假设(尽管这是一个常见且通常是可行的假设)。 更全面的测试套件将指示是否

{target=}}choice

应该是一个匹配。

与Mitch的答案类似,但:

{target=[^}]+}

该字符至少应匹配1个非}字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM