这是我的文件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 ++中有效。不确定我做错了什么。有人可以请帮助。
答案 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[^$+]"