[英]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.