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へのリンクがあります。ここにYouTubeのビデオがあります:
これを達成するために私のStripBBCode()関数を変更するにはどうすればよいですか?
EDITED
提案最初の回答では、以下のダビデからは正しかったです。ここで
は、私が今使っているものです:
string r = Regex.Replace(s,
@"\[youtube\].*\[\/youtube\]",
String.Empty, RegexOptions.IgnoreCase);
r = Regex.Replace(r,
@"\[img\].*\[\/img\]",
String.Empty, RegexOptions.IgnoreCase);
[img]。* [/ img]を削除するRegExはどのように見えますか?私は正規表現ではありません。私の関数の元の正規表現は、構文を正しく取得するための多くのカットアンドペーストセッションの結果でした。 –
ありがとうございます。私は動作するように思われる元の質問の最後にバージョンを追加しました。鉱山はあなたのように埋め込まれた疑問符を持っていません。とにかく、正しい方向に私を指してくれてありがとう。それは有り難いです! –
'。*? 'の疑問符は、その式を怠惰にし、式を満たすのに必要な最小文字数を消費します。それがなければ、正規表現は '[img] asdf [/ img]重要なテキスト[img] asdf [/ img]'を空の文字列に縮小します。 –