如何在C#中的其他两个字符串之间返回一个字符串?

时间:2013-10-16 06:26:19

标签: c# regex string substring

我有一个已创建页面源的字符串。我需要从字符串中抓取几行文本。我需要的字符串是两个其他字符串之间。这两个字符串是“关键字”:“,”

如何在引号后搜索带有冒号的字符串,例如“keywords”:

我会使用正则表达式吗?

谢谢。

4 个答案:

答案 0 :(得分:2)

在你的情况下,正则表达式太强大了,无法使用它来解决这个问题。只需使用string.IndexOf()string.Substring()即可。获取单词的位置,得到一个最接近逗号的位置 - 在IndexOf中有一个重载,让你指定搜索的起始位置。

这是一个代码片段,它更多的解释然后我可以用文字来做。

var text = "\"keywords\":some text you want,and a text you do not want";
var searchFor = "\"keywords\":";
int firstIndex = text.IndexOf(searchFor);
int secondIndex = text.IndexOf(",", firstIndex);
var result = text.Substring(firstIndex + searchFor.Length, secondIndex - searchFor.Length);

答案 1 :(得分:1)

以下正则表达式将匹配“keywords”和“,”之间的所有内容:

Regex r = new Regex("keywords:(.*),");
Match m = r.Match(yourStringHere);

foreach(Group g in m.Groups) {
    // do your work here
}

答案 2 :(得分:0)

您可以尝试这样做,而不使用正则表达式

    string str = "This is an example string and my data is here";
    string first =  "keywords:";
    string second = ",";
    int Start, End;
    if (str.Contains(first) && str.Contains(second))
    {
        Start = str.IndexOf(first, 0) + first.Length;
        End = str.IndexOf(second, Start);
        return str.Substring(Start, End - Start);
    }
    else
    {
        return "";
    }

答案 3 :(得分:0)

这应该跨多行。

string input = @"blah blah blah ""keywords"":this is " + Environment.NewLine + "what you want right?, more blah...";
string pattern = @"""keywords"":(.*),";
Match match = Regex.Match(input, pattern, RegexOptions.Singleline);
if (match.Success)
{
    string stuff = match.Groups[1].Value;
}