2012-06-05 72 views
0

之間找到子,我想捕捉初始目錄的價值在此字符串:正則表達式來兩個字符串

「等等等等初始目錄= MyCat'」

我想的結果成爲:MyCat

在等號前後可能有或沒有空格,並且在單引號之前可能有或沒有空格。

嘗試這樣做各種別人,而是沒有去:

/Initial Catalog\s?=\s?.*\s?\'/ 

使用.NET。

+0

你會得到什麼結果? – gereeter

+0

空白或不匹配。 –

回答

1

這是一個很好的正則表達式

= *(.*?) *' 

使用的想法,並根據需要添加\ s或更高文字文本。

在C#1組將包含比賽

string resultString = null; 
try { 
    Regex regexObj = new Regex("= *(.*?) *'"); 
    resultString = regexObj.Match(subjectString).Groups[1].Value; 
} catch (ArgumentException ex) { 
    // Syntax error in the regular expression 
} 
+0

爲什麼在'。*'之後有問號? '。*'將已經匹配一個空字符串。 – gereeter

+0

@gereeter如果你讓它變得貪婪(所以放棄?),你會匹配MyCat後面的空格在「blah blah Initial Catalogue = MyCat'」中只有MyCat應該匹配 – buckley

+0

這個對我來說似乎是最乾淨的。感謝大家!! –

2

你需要把周圍的字符串的一部分,你想匹配的括號:

/Initial Catalog\s*=\s*(.*?)\s*'/ 

你也想排除儘可能多的空間前',所以你需要\s*而不是\s?.*?意味着字符串的提取部分不會佔用這些空格,因爲它現在是懶惰的。

+1

這會在所需的比賽周圍留下空白空間。輸入示例:「blah blah Initial Catalogue = MyCat'」和「blah blah Initial Catalogue = MyCat'」 – buckley

+0

好點,現在應該修復。謝謝。 –

+1

你確定嗎?更新仍然在組1中有空格。另外,爲什麼'最終逃脫?我看到OP也這樣做,但懷疑是否需要 – buckley

0
Regex rgx = new Regex(@"=\s*([A-z]+)\s*'"); 
String result = rgx.Match(text).Groups[1].Value; 
相關問題