2010-12-21 62 views
0

ç我有一个有点麻烦,我的正则表达式#正则表达式的麻烦

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); 

基本上我需要的是获得一个匹配时,选择或跳转存在,它是由{目标=}与后=任何数量的字符进行。 并且还搭配是否继续或以前存在,但只有当他们是由什么进行。如果A = false,b = true,c = false,d = true,e = false,f = false,g = true,h = false,i = true,j = false,k = false并且l =假,

与我正则表达式上面我得到的一切吧J和L正确的读数。

任何人都可以请帮忙吗?

+0

你发布了一些应该是评论的答案。我认为你仍然可以删除它们并将它们作为评论。如果我对答案发表评论,则可能无法删除它们。 – 2010-12-21 14:58:57

+0

实际上,无论如何,您都可以删除您的答案,但将删除问题的过程与删除答案的过程相混淆。 – 2010-12-21 19:30:09

回答

1

我想你想与

{target=[^}]*} 

这使得之后的任何数量的非}字符替换

{target=(\w.*)} 

“目标=”。

编辑:其实,能否请你澄清你的意思?我从上下文中收集到的,

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

预期值(而不是实际..你应该明确提到这是为了更清楚)。但是,根据你的口头描述,L (修正:A和F)应该是真的,不是假的。

另外,我要去的是“固定在一个时间一个错误”的基础上。根据你的口头描述,我的正则表达式仍然是正确的,即使它是错误的。我马上会做另一个编辑。

编辑2:我相信你是什么后

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

编辑3:对不起编辑这么多次,但我要指出,服用第一}=后一个假设(尽管这是一种常见而常用的方法)。更全面的测试套件将表明是否

{target=}}choice 

应该是匹配。

0

米奇的答案相似,但:

{target=[^}]+} 

这应该与至少1个非}字符。