1

这是我的文件 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 匹配的正则表达式。这是我正在使用的正则表达式

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

我只是无法获得匹配项,也无法弄清楚为什么它不匹配。相同的正则表达式适用于记事本++。不知道我做错了什么。有人可以帮忙吗。

4

5 回答 5

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

var urls = Regex.Matches(text, pattern,RegexOptions.Multiline)
            .Cast<Match>()
            .Select(m => m.Value.Trim())
            .ToList();
于 2013-09-19T17:22:10.593 回答
1

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

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

于 2013-09-19T17:27:02.117 回答
0

尝试这个:

//note the @ at the beginning
string pattern = @"http://go.*?.microsoft.com/fwlink.*?[\r\n]";
于 2013-09-19T17:20:00.960 回答
0

也许您需要在文件末尾有一个空行(按 Enter)?您的文件实际上是否以 \r\n 结尾?

于 2013-09-19T17:21:13.580 回答
0

可能您的字符串只是以换行符aka "\n"而不是回车换行符aka "\r\n"\r?\n结尾,也许您可​​以在正则表达式的末尾尝试这个。

此外,您可以$结合使用元字符[^]来匹配除换行符以外的任何内容,例如:

string pattern = "http://go.*?.microsoft.com/fwlink[^$+]"
于 2013-09-19T17:22:35.470 回答