все! У меня есть такой текст: «Некоторые тексты с uri http://test.com и другими словами». И мне нужно получить части URI, используя одно регулярное выражение.
Я пытаюсь это:
string text = "Some text with uri http://test.com and other words."; string pattern = @"\b(\S+)://([^:]+)(?::(\S+))?\b"; MatchCollection matches = Regex.Matches(text, pattern);
И это работает, когда я пишу "Некоторый текст с URI http://test.com" или" word1 http://test.com:5000 word2 ".
Где ошибка?
Ваш второй модификатор + является жадным, поэтому он соответствует всему после http://, если не достигнет : или конца строки. Попробуйте это:
+
http://
:
@"\b(\w+)://([^:]+?)(?::(\S+))?\b"
Это должно приблизить тебя ... Я все еще не совсем уверен, что ты хочешь получить ...
Если бы вы могли показать желаемые результаты, это помогло бы ...
\b(\S+)://([^: ]+)