想要从String中删除标签

时间:2016-02-17 10:11:36

标签: java regex string tags

我有以下字符串,其中包含一些自定义标记。我想从String中删除这些自定义标记。你能帮我解决一下如何删除标签。

 String temp = "[p]test to remove tags started with braces [B]bold text [/B][I]italic text [/I] [U]underlined Text[/U] bla bla [/P]"

5 个答案:

答案 0 :(得分:2)

您可以使用replaceAll轻松完成此操作,.next(selector)接受正则表达式。

temp = temp.replaceAll("\\[/?\\w\\]","")

\\[表示字面左方括号 /?表示可选的正斜杠 \\w表示单词字符(例如字母) \\]表示字面右方括号。

此序列组合应与您在问题中列出的所有标记相匹配,并用空字符串替换它们将有效地删除它们。

答案 1 :(得分:0)

您可以对要删除的每组字符使用replace(),如下所示:

temp = temp.replace("[p]", "");
temp = temp.replace("[B]", "");
temp = temp.replace("[/B]", "");
temp = temp.replace("[I]", "");
temp = temp.replace("[/I]", "");
temp = temp.replace("[U]", "");
temp = temp.replace("[/U]", "");
temp = temp.replace("[/P]", "");

答案 2 :(得分:0)

String cleanedString = temp.replaceAll("\\[[a-zA-Z\\/]+\\]", "");

答案 3 :(得分:0)

到目前为止,建议一直很混乱并占用多行,因为它们分别对每个[]进行了解释。这个正则表达式\\[(.*?)\\]一次处理它们

public class Test {
    public static void main(String[] args) {
        String temp = "[p]test to remove tags started with braces [B]bold text [/B][I]italic text [/I] [U]underlined Text[/U] bla bla [/P]";
        temp = temp.replaceAll("\\[(.*?)\\]","");
        System.out.println(temp);
    }
}

正则表达式的精彩网站是regex101。这允许您测试自己的正则表达式,看它们是否有效以及如何工作。对于上面给出的click here,就像这样。

  • \\[字面匹配字符[
  • (.*?)是一个与任何匹配的捕获组,不包括换行符。
    • *?是一个惰性量词,在这种情况下匹配[]之间的所有字符
  • \\]字面匹配字符]

答案 4 :(得分:-1)

我要做的是制作正则表达式并使用方法replace_all(),如下所示:

temp.replaceAll("\\[[a-zA-Z\\/]+\\]", ""); 

post可能会对您有所帮助。

使用它来制作自己的正则表达式并对其进行测试:Regex Tester