2012-06-05 73 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; 
相关问题