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

C#正则表达式与换行符不匹配,c#,regex,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 我想写一个正则表达式来匹配这里列出的两个URL。下面是我使用的正则表达式 string pattern = "http://go.*?.microsoft.com/fwlink.*?[\r\n]"; 我希望比赛如下:

这是我的文件test1.txt

Line 4:   http://go34.microsoft.com/fwlink/p/?LinkId=333333
    Line 4:   http://go/p.microsoft.com/fwlink/p/?LinkId=333333
我想写一个正则表达式来匹配这里列出的两个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
我就是拿不到火柴,也不明白为什么它不匹配。同样的正则表达式在notepad++中也可以使用。不知道我做错了什么。有人能帮忙吗

试试这个:

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

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

也许你需要在文件末尾有一个空行(按回车键)?您的文件是否以\r\n结尾?

可能需要在文件结尾处输入一个空行(按Enter键)?您的文件实际上是否以\r\n结尾?

字符串模式=”http://go.*?.microsoft.com/fwlink.*?$”;
string pattern = "http://go.*?.microsoft.com/fwlink.*?$";

var urls = Regex.Matches(text, pattern,RegexOptions.Multiline)
            .Cast<Match>()
            .Select(m => m.Value.Trim())
            .ToList();
var url=Regex.Matches(文本、模式、RegexOptions.Multiline) .Cast() .Select(m=>m.Value.Trim()) .ToList();
字符串模式=”http://go.*?.microsoft.com/fwlink.*?$”;
var url=Regex.Matches(文本、模式、RegexOptions.Multiline)
.Cast()
.Select(m=>m.Value.Trim())
.ToList();

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

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

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

可能字符串的结尾是换行符aka“\n”,而不是回车换行符aka“\r\n”,也许您可以在正则表达式的结尾尝试此
\r?\n

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

string pattern = "http://go.*?.microsoft.com/fwlink[^$+]"
尝试
Regex.IsMatch(输入@”\s*http://go\S*\.microsoft.com/fwlink\S*\S*”,RegexOptions.Multiline)
。这将匹配仅包含url的任何行,该行由任意数量的空格字符包围

Regex.Repalce(输入@”\s*(http://go.*\.microsoft.com/fwlink\S*)\S*,“$1”,RegexOptions.Multiline)
将仅获取匹配的url。

请尝试
Regex.IsMatch(输入,@”\S*http://go\S*\.microsoft.com/fwlink\S*\S*”,RegexOptions.Multiline)
。这将匹配仅包含url的任何行,该行由任意数量的空格字符包围


Regex.Repalce(输入@”\s*(http://go.*\.microsoft.com/fwlink\S*)\S*,“$1”,RegexOptions.Multiline)
将仅获取匹配的url。

可能不匹配,因为第二行末尾没有换行符您希望在一个匹配中包含两个url,还是要返回多个匹配?我觉得这应该是显而易见的,但我有我的怀疑。可能使您的
[\r\n]
可选?
可能不匹配,因为第二行末尾没有换行符您希望在一个匹配中包含两个URL,还是希望返回多个匹配?我觉得这应该是显而易见的,但我有我的怀疑。也许可以使用