C#regEx表达式与换行符不匹配

时间:2013-09-19 17:16:49

标签: c# regex

这是我的文件test1.txt

Line 4:   http://go34.microsoft.com/fwlink/p/?LinkId=333333
    Line 4:   http://go/p.microsoft.com/fwlink/p/?LinkId=333333

我想编写一个匹配此处列出的2个URL的正则表达式。这是我正在使用的regEx表达式

string pattern = "http://go.*?.microsoft.com/fwlink.*?[\r\n]";

我期待比赛如下:

http://go34.microsoft.com/fwlink/p/?LinkId=333333
http://go/p.microsoft.com/fwlink/p/?LinkId=333333

我只是无法得到比赛,并且无法弄清楚为什么它不匹配。相同的正则表达式在notepad ++中有效。不确定我做错了什么。有人可以请帮助。

5 个答案:

答案 0 :(得分:5)

string pattern = "http://go.*?.microsoft.com/fwlink.*?$";

var urls = Regex.Matches(text, pattern,RegexOptions.Multiline)
            .Cast<Match>()
            .Select(m => m.Value.Trim())
            .ToList();

答案 1 :(得分:1)

试试Regex.IsMatch(input, @"\s*http://go\S*\.microsoft.com/fwlink\S*\s*", RegexOptions.Multiline)。这将匹配任何仅包含由任意数量的空格字符包围的网址的行。

Regex.Repalce(input, @"\s*(http://go.*\.microsoft.com/fwlink\S*)\s*", "$1", RegexOptions.Multiline)只会获得匹配的网址。

答案 2 :(得分:0)

试试这个:

//note the @ at the beginning
string pattern = @"http://go.*?.microsoft.com/fwlink.*?[\r\n]";

答案 3 :(得分:0)

也许你需要在文件末尾加一个空白行(按回车键)?您的文件实际上是以\ r \ n?

结尾

答案 4 :(得分:0)

可能您的字符串只是以换行又名“\ n”而不是回车符Feed 又名“结尾\ r \ n“,也许你可以在正则表达式的末尾试试这个\r?\n

此外,您可以将$元字符与[^]结合使用,以匹配除新行之外的所有内容,例如:

string pattern = "http://go.*?.microsoft.com/fwlink[^$+]"