2012-03-15 18 views
0

このRegex ([a-zA-Z0-9]?(?:http[s]?://)?(?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?)は、文字列の内側にhttp://www.msn.comまたはwww.msn.comまたはmsdn.microsoft.comまたはhttp://msdn.microsoft.comの出現を見つけることに成功しました。しかし、私が使用する必要がある2つの置換アルゴリズム、この1つは<a href=\"$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>とこの1つは<a href=\"http://$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>です。 違いは、www.msn.comのようなリンクに必要なhttp://の文字列の接頭辞です。Regexの条件付き置換

しかし、何が起こっているのは、最初に見つかったのoccuranceがhttp://www.msn.comあるので、それが複数回に置き換えwww.msn.comを交換しようとしている場合、私はので、物事をめちゃくちゃにされたに置き換えるステートメントを使用するループである - それは見つかっかつてときは、すでにhttp://とリンクしていて、それが見つかったらwww.msn.comとなります。

必要に応じてhttp://を条件付きで追加する方法はありますか?

+1

$2を使うのか?あなたのためにやる?いつあなたは "http://"の前で何かをキャプチャする必要がありますか?あなたは "http://"の後ろのすべてをキャプチャして、常に GetSet

+0

できることは、私がこの文字列 '(www.msn.com)でカッコをピックアップしないようにすることです - 私はちょうどリンクをピックアップします。 –

答えて

4

はこれで試してみてください:

([a-zA-Z0-9]?http[s]?://)?((?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?) 

と[-ZA-Z0-9]最初に何をするか代わりに$1

+1

もし私があなたに1000倍アップアップすることができたら - 私の友人の素晴らしいアイデア! –