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

本文关键字:不匹配 换行符 正则表达式 | 更新日期: 2023-09-27 18:32:12

这是我的文件测试1.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

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

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

string pattern = "http://go.*?.microsoft.com/fwlink.*?$";
var urls = Regex.Matches(text, pattern,RegexOptions.Multiline)
            .Cast<Match>()
            .Select(m => m.Value.Trim())
            .ToList();

尝试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)只会获得匹配的网址。

也许您需要在文件末尾添加一个空行(按 Enter 键)? 您的文件实际上以 ''r' 结尾吗?

可能您的字符串只是以换行符(又名"'")而不是回车换行符又名"''r'"结尾,也许您可以在正则表达式末尾尝试此'r?'n

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

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

试试这个:

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