2010-12-04 15 views
1

JQuery MarkItUpを使用する機能を開発中です!エディタをBBCodeエディタとして使用します。私は、以下を含むBBCodesの小さなサブセットを許可しています: BBCodeタグを文字列から取り除くためのRegEx

[b] 
[i] 
[quote] 
[quote=Mr Incredible] 
[img] 
[url] 
[youtube] 

私はエディタを使用して1500文字「説明」フィールドを持っていますが、私はまた、 はのダイジェスト150文字を格納するために計画していますすべてのBBCodeの記述が取り除かれました。

私は現在、C#でこれを行うには単純なRegExを使用しています。それは基本的に文字列に埋め込まれたBBCodeを核にしますが、ダイジェストから削除したい[img] URLや[youtube]ビデオIDのような "ノイズの多いコンテンツ"を残します。ここで

は私の現在の正規表現です:

public static String StripBBCode(string bbCode) 
    { 
    string r = Regex.Replace(bbCode, 
    @"\[(.*?)\]", 
    String.Empty, RegexOptions.IgnoreCase); 

    // Finally, replace all newlines with a space 
    r = Regex.Replace(r, 
    @"(\r\n|\n\r|\r|\n)+", 
    @" ", RegexOptions.IgnoreCase); 

    return r; 
    } 

私はこの関数を使用して次の文字列を実行する場合、私は結果を以下に示し得る:

ソース

This is [b]bold[/b]. This is [i]italic[/i]. 

Here is an image: 
[img]http://www.phatmac.com/Pics/Movies/Incredibles.jpg[/img] 

Here is a link to [url=http://espn.go.com]ESPN[/url]. 

Here is a YouTube video: 

[youtube]WJ0UkZ3W4FA[/youtube] 

結果

太字です。これは斜体です。ここに画像があります:http://www.phatmac.com/Pics/Movies/Incredibles.jpgここにESPNへのリンクがあります。ここではYouTubeの動画は、次のとおりです。WJ0UkZ3W4FA

ここで私はこれは大胆であるバック

取得したいものです。これは斜体です。ここにイメージがあります:ここにESPNへのリンクがあります。ここにYou​​Tubeのビデオがあります:

これを達成するために私のStripBBCode()関数を変更するにはどうすればよいですか?

EDITED

提案最初の回答では、以下のダビデからは正しかったです。ここで

は、私が今使っているものです:

string r = Regex.Replace(s, 
    @"\[youtube\].*\[\/youtube\]", 
    String.Empty, RegexOptions.IgnoreCase); 

r = Regex.Replace(r, 
    @"\[img\].*\[\/img\]", 
    String.Empty, RegexOptions.IgnoreCase); 

答えて

2

あなたは、いくつかのあなたがコンテンツを削除したいタグ、そしてあなただけのタグを削除したい残りの部分を持っています。

[img].*[/img]をstring.empty、[youtube].*[/youtube]に置き換えてください。コンテンツを削除する必要がある場合は、[.*]を削除してください。

編集:

は、私はどちらかの正規表現の専門家ではないんだけど、私は@"\[img\].*?\[/img\]"が何をしたいと思います。 @"\[(.*?)\]"に括弧が必要ではないと思いますが、この文脈では括弧は一致するテキストを保存して、\1と再び一致させることを意味します。

+0

[img]。* [/ img]を削除するRegExはどのように見えますか?私は正規表現ではありません。私の関数の元の正規表現は、構文を正しく取得するための多くのカットアンドペーストセッションの結果でした。 –

+0

ありがとうございます。私は動作するように思われる元の質問の最後にバージョンを追加しました。鉱山はあなたのように埋め込まれた疑問符を持っていません。とにかく、正しい方向に私を指してくれてありがとう。それは有り難いです! –

+0

'。*? 'の疑問符は、その式を怠惰にし、式を満たすのに必要な最小文字数を消費します。それがなければ、正規表現は '[img] asdf [/ img]重要なテキスト[img] asdf [/ img]'を空の文字列に縮小します。 –

関連する問題