1

私はこのプロジェクトにC#を使用していますが、基本的に必要なのはプレーンテキストをHTMLに変換する方法です。テキスト内のリンクをHTML内のアンカーリンクに変換するための正規表現(実際にはStack Overflowで考えています)を見つけました。これ:

        Regex regx = new Regex(@"https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?", RegexOptions.IgnoreCase);

        MatchCollection mactches = regx.Matches(input);
        foreach (Match match in mactches)
        {
            output = output.Replace(match.Value, String.Format("<a href=\"{0}\" target=\"_blank\">{0}</a>", match.Value));
        }

うまく機能しますが、URLの一部としてダッシュ(-)が考慮されないという欠陥が見つかりました。そのため、最初のダッシュに当たると、アンカータグが閉じます。したがって、正規表現にダッシュを含める必要があるのは明らかですが、問題は、RegExについてまったく手がかりがなく、ロシア語のように見えることです。URLに許可された文字としてダッシュを含めるために、正規表現にどのような小さな編集を加える必要があるかを誰かが知っていますか?

4

2 に答える 2

2

これを試して:@"https?://([-\w\.]+)+(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)?"

ドメイン名ではないURLの部分のダッシュと一致するように、2番目の文字クラス(角かっこで囲まれた部分)にダッシュを追加しました。

于 2013-02-18T05:22:13.383 に答える
0

ftp私はとfileスキームをサポートするこれを使用しますhttp

@"\b((https?|ftp|file)://|(www|ftp)\.)[-A-Z0-9+&@#/%?=~_|$!:,.;\(\)]*[A-Z0-9+&@#/%=~_|$]"

&次のように区切られたパラメータを含むURLを認識します。

http://www.cbsnews.com/video/watch/?id=7400904n&tag=re1.channel

オリジナルはテキストからURLを抽出する(正規表現)にあります。次のような括弧を含むURLを認識するように少し変更しました。

http://msdn.microsoft.com/en-us/library/ms686722(v=VS.85).aspx

もちろん、に置き換えることでRegexOptions.IgnoreCase簡略化できますが、この正規表現で指定する必要があります。A-Z\w

于 2013-02-18T06:35:23.060 に答える