簡體   English   中英

用於從字符串中刪除特定BBCode的正則表達式

[英]Regex for removing a specific BBCode from a string

我正在嘗試編寫一種從輸入字符串中刪除特定BBCode的簡單方法。

例如,我有一個輸入:

string input = "[b]Hello World![/b]";

我希望能夠做到:

Remove(input, "b");

得到一個輸出:

"Hello World!"

正則表達式真的不是我的強項。 我已經設法從谷歌拼湊以下內容:

public static string Remove(string input, string code)
{
    string pattern = string.Format(@"\[{0}\].*?\[\/{1}\]", code, code);

    return Regex.Replace(input, pattern, string.Empty, RegexOptions.IgnoreCase);
}

不幸的是,這給我的給定示例返回一個空字符串。

誰能告訴我如何糾正我的正則表達式以獲得所需的輸出?

謝謝

使用這個簡單的正則表達式: \\[/?{0}\\]

你的正則表達式正在刪除整個字符串

  • 您的正則表達式\\[{0}\\].*?\\[\\/{1}\\]正在刪除整個[b]...[/b]字符串。 這就是為什么你從替換中得到一個空字符串。

  • 你需要的是只刪除[b][b] 在正常的正則表達式中,用\\[/?b\\]表示非常簡單,其中斜杠是可選的?

  • 在參數化的正則表達式中,類似\\[/?{0}\\]都可以。

下面的正則表達式將捕獲字符串Hello World! 在第二組內。

^(.*?)((?<=])[^[]*)(.*)$

DEMO

因此,用第二個捕獲的組替換所有輸入字符串。

如果你確定必須同時出現起始和尾隨特殊符號並且你不希望它們出現在結果中,你可以使用正向回顧((?<=(這里是你的符號)))和正向前看((? =(您的符號在這里)))指定的字符。

完整答案將如下所示:

(?<=(\[{0}\])).*(?=(\[\/{1}\]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM