注意:此问题中的所有引号实际上都是代码的一部分。
我正在学习正则表达式,我正试图用一个音乐网站来搜索它。我将网站的源代码放入一个名为'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");
提前感谢!
答案 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();
}