2010-12-21 88 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個非}字符。