在正则表达式中使用引号,在C#中使用引号

时间:2012-06-26 23:05:23

标签: c# regex quotes

注意:此问题中的所有引号实际上都是代码的一部分。

我正在学习正则表达式,我正试图用一个音乐网站来搜索它。我将网站的源代码放入一个名为'ytcmusic.txt'的文本文件中。这是html的一个示例:

<li><a href="angelpool%20-%20know.mp3"> angelpool - know.mp3</a></li>
<li><a href="angelpool%20-%20sellout.mp3"> angelpool - sellout.mp3</a></li>
<li><a href="angelpool%20-%20time.mp3"> angelpool - time.mp3</a></li>
<li><a href="bella%20-%20gibsons.mp3"> bella - gibsons.mp3</a></li>

我将使用第一行作为示例,我正在尝试仅刮掉“angelpool%20-%20know.mp3”并且这样做是我使用的正则表达式:“。*。mp3” - ----当我把它放入C#时,我必须用引号括起来,这会破坏正则表达式中的引号。继承代码(它不编译,如果你删除正则表达式周围的一组引号,它确实但不会返回源的正确部分):

var sr = new StreamReader("ytcmusic.txt");
        string str = sr.ReadToEnd();
        var match = Regex.Match(str, @".*.mp3");

提前感谢!

1 个答案:

答案 0 :(得分:3)

这样做

"[^"]*"

请注意,我会保留您的样本输入,并假设标题是引用的唯一内容。如果不是这种情况,则必须在正则表达式中添加更多上下文。

如果你想在没有引号的情况下进行捕捉,你可以像这样引入括号

"([^"]*)"

在C#中,这变为

StringCollection resultList = new StringCollection();
Regex regexObj = new Regex("\"([^\"]*)\"");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
    resultList.Add(matchResult.Groups[1].Value);
    matchResult = matchResult.NextMatch();
}