2013-09-19 3 views
1

Это мой файл test1.txtC не соответствует новой строке

Line 4: http://go34.microsoft.com/fwlink/p/?LinkId=333333 
    Line 4: http://go/p.microsoft.com/fwlink/p/?LinkId=333333 

Я хочу написать регулярное выражение, которые соответствуют это на 2 адреса, перечисленные здесь. Вот выражение 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 

Я просто не в состоянии получить матч-х и не могу понять, почему его не соответствия. Это же выражение регулярных выражений работает в блокноте ++. Не уверен, что я делаю неправильно. Может кому-то помочь.

+0

, вероятно, не соответствует, потому что вторая строка не имеет новой строки в конце – Jonesopolis

+1

Вы хотите, чтобы два URL-адреса были в одном совпадении или вы хотите вернуть несколько совпадений? Я чувствую, что это должно быть очевидно, но у меня возникают сомнения. Возможно, ваш '[\ r \ n]' необязательный с '?' – Guttsy

ответ

0

Попробуйте это:

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

Может быть, вам нужна пустая строка (нажмите Enter) в конце файла? Действительно ли ваш файл заканчивается на \ r \ n?

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

var urls = Regex.Matches(text, pattern,RegexOptions.Multiline) 
      .Cast<Match>() 
      .Select(m => m.Value.Trim()) 
      .ToList(); 
0

Возможно ваша строка просто заканчивается фидерной линии ака "\ п" вместо Carriage Return Line Feed ака "\ г \ п", может быть, вы можете попробовать это \r?\n в конце вашего регулярного выражения.

Кроме того, вы можете использовать $ метасимволы в сочетании с [^], чтобы соответствовать ничего, кроме новой строки, пример:

string pattern = "http://go.*?.microsoft.com/fwlink[^$+]" 
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.

Смежные вопросы