Какой самый простой способ сопоставить все ссылки и адреса электронной почты в строке с массивом списка? Я использовал preg_match
в PHP, но в C# похоже, что он будет другим.
Поиск всех ссылок и адресов электронной почты в строке
comment
Вы просите регулярное выражение или вы спрашиваете, как его использовать в С#?
- person SLaks   schedule 09.06.2010
comment
Дубликат: stackoverflow.com/questions/591859/
- person serhio   schedule 09.06.2010
comment
Под ссылкой вы имеете в виду только адреса http[s] или она включает mailto:, javascript: и так далее?
- person Humberto   schedule 09.06.2010
Ответы (2)
Предполагая, что у вас уже есть работающее регулярное выражение, вы можете использовать Regex
класс, например:
static readonly Regex linkFinder = new Regex(@"https?://[a-z0-9.]+/\S+|\s+@\S+\.\S+", RegexOptions.IgnoreCase);
foreach(Match match in linkFinder.Matches(someString)) {
//Do things...
string url = match.Value;
int position = match.Index;
}
person
SLaks
schedule
09.06.2010
@serhio:
\S+
должно соответствовать всему этому. В первую очередь я пытаюсь продемонстрировать, как использовать регулярное выражение.
- person SLaks; 09.06.2010
Это должно работать для ссылок:
https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?
Это должно работать для адресов электронной почты:
[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}
person
npinti
schedule
09.06.2010
-1: существуют домены верхнего уровня, которым регулярное выражение электронной почты не соответствует (например, TLD .museum). И домен должен быть в нижнем регистре, так что на самом деле он не будет соответствовать ни одному. Regex — НЕПРАВИЛЬНЫЙ ИНСТРУМЕНТ для поиска адресов электронной почты.
- person Richard; 09.06.2010
@Richard: Регулярные выражения не являются неправильным инструментом для поиска электронных писем. Это именно правильный инструмент. Это неправильный инструмент для анализа и проверки, но поиск строк является целью регулярного выражения.
- person John Gietzen; 09.06.2010
@John: для любого короткого регулярного выражения будут действительные адреса электронной почты, которые ему не удастся найти. (Например, с тем, что в Q, многие O'Reilly будут разочарованы.)
- person Richard; 10.06.2010