2016-05-18 12 views
0

スタック!.NETのハイパーリンクを除くすべての正規表現に一致する正規表現

.NETのハイパーリンク以外のテキストはすべて一致させようとしています。私はそれについてのスレッドを発見したが、.NETのために働いていない - 例示は>Regular expression to match a line that doesn't contain a word?

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

それはhttp://www.stack.comが、すべてに一致する必要があります。

すべてのテキストをハイパーリンクで小文字にしています。 私は働いている正規表現を持っていません。

THANKS

+0

リンクを一致させて削除するだけの理由はありますか? –

+0

さて、もし私があなただったら、ハイパーリンクを取り除き、テキストなしで入手したいと思っています。 'Regex.Replace(input、@" https?:// \ S + \ b "、string.Empty)'を試してください。 –

+0

@WiktorStribiżewすべてのテキストを小文字にしようとしていますが、ハイパーリンク –

答えて

1

あなたは、ハイパーリンクにマッチし、グループ1にそれをキャプチャして、ちょうど下にそのケースをオンにする任意の大文字を一致させることがあります。 Regex.Replaceメソッド内で、グループ1が一致しているかどうかをチェックし、それに応じて置換するマッチエバリュエーターを実装します。

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

(https?://\S+\b)正規表現はかなり荒れている、URLの正規表現パターンの多くは、最高のあなたに合ったものを選択し、周りにあります。

\p{Lu}は、すべてのUnicode大文字を含む単一の大文字に一致します。あなたのリンクがHTTPで始まらない場合、より良いパフォーマンスのために+の後に(\p{Lu}+のように)追加することができます。

関連する問題