Ich habe die folgende Funktion Rückkehr:C# Regex mehrere Textzeilen
public static string ReturnEmailAddresses(string input)
{
string regex1 = @"\[url=";
string regex2 = @"mailto:([^\?]*)";
string regex3 = @".*?";
string regex4 = @"\[\/url\]";
Regex r = new Regex(regex1 + regex2 + regex3 + regex4, RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection m = r.Matches(input);
if (m.Count > 0)
{
StringBuilder sb = new StringBuilder();
int i = 0;
foreach (var match in m)
{
if (i > 0)
sb.Append(Environment.NewLine);
string shtml = match.ToString();
var innerString = shtml.Substring(shtml.IndexOf("]") + 1, shtml.IndexOf("[/url]") - shtml.IndexOf("]") - 1);
sb.Append(innerString); //just titles
i++;
}
return sb.ToString();
}
return string.Empty;
}
Wie Sie mir eine URL in dem "Abschlag" Format sehen zu definieren:
[url = http://sample.com]sample.com[/url]
In der gleichen Weise, E-Mails werden auch in diesem Format geschrieben:
[url=mailto:[email protected]][email protected][/url]
jedoch, wenn ich in einem mehrzeiligen String, mit mehreren E-Mail-Adressen weitergeben, es ret nur urns nur die erste E-Mail. Ich möchte, dass es mehrere Übereinstimmungen gibt, aber ich kann nicht scheinen, dass das funktioniert.
Zum Beispiel
[url=mailto:[email protected]][email protected][/url] /r/n a whole bunch of text here /r/n more stuff here [url=mailto:[email protected]][email protected][/url]
Dies wird die erste E-Mail über nur zurückgeben?
Die "Multiline" Regex Option ist für, wenn Sie '^' und '$' verwenden möchten, um den Anfang und das Ende einer Zeile und nicht den Anfang und das Ende der gesamten Zeichenfolge anzupassen. Wenn Sie diese Token nicht verwenden, ist diese Option bedeutungslos. – Abion47