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