正则表达式找到两个字符串之间的子串

时间:2012-06-05 21:18:43

标签: regex

我想在此字符串中捕获初始目录的值:

“blah blah Initial Catalog = MyCat'”

我希望结果为: MyCat

在等号之前和之后可能存在或不存在空格,并且在单引号之前可能存在或不存在空格。

尝试了这个和其他各种但是没有去:

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

使用.Net。

3 个答案:

答案 0 :(得分:2)

您需要在要匹配的字符串部分周围添加括号:

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

此外,您希望在'之前排除尽可能多的空格,因此您需要\s*而不是\s?.*?表示字符串的提取部分不占用这些空格,因为它现在是懒惰的。

答案 1 :(得分: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
}

答案 2 :(得分:0)

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