2016-05-18 10 views
0

Stack!Regex für alle außer Hyperlinks für .NET

Ich versuche, den gesamten Text aber Hyperlinks in .NET zu vergleichen. Ich habe einen Thread darüber gefunden, aber es funktioniert nicht für .NET ->Regular expression to match a line that doesn't contain a word?

Als Beispiel für:

Text text 123 123 timi other text http://www.stack.com asd asd sadokaspodkas 

Es sollte alles aber http://www.stack.com entsprechen.

Ich versuche, alle Texte, aber Hyperlinks klein zu halten. Ich habe keine funktionierende Regex.

DANK

+0

Warum nicht zu den Links passen und sie einfach entfernen? –

+0

Nun, wenn ich du wäre, würde ich * die Hyperlinks entfernen und den Text ohne sie erhalten. Versuchen Sie 'Regex.Replace (Eingabe, @" https?: // \ S + \ b ", string.Empty)'. –

+0

@ WiktorStribiżew Ich versuche, alle Texte Kleinbuchstaben, aber Hyperlinks –

Antwort

1

Sie können einen Hyperlink, übereinstimmen und erfassen sie in Gruppe 1, und dann passen einfach alle Großbuchstaben, den Fall niedriger zu machen. Implementieren Sie in einer Regex.Replace-Methode einen Übereinstimmungsbewerter, um zu prüfen, ob Gruppe 1 übereinstimmt, und ersetzen Sie sie entsprechend.

Regex.Replace(input, @"(https?://\S+\b)|\p{Lu}", 
       m => m.Groups[1].Success ? 
        m.Groups[1].Value : m.Value.ToLower() 
      ) 

Die (https?://\S+\b) regex ist ziemlich rau, es gibt eine Menge URL regex Muster sind das eine um, wählen, die Ihnen am besten passt.

Die \p{Lu} entspricht einem einzelnen Großbuchstaben (einschließlich aller Unicode-Großbuchstaben). Wenn Ihre Links nicht mit HTTP beginnen können, können Sie nachher eine + hinzufügen (als \p{Lu}+), um eine bessere Leistung zu erzielen.

Verwandte Themen