如何删除字符串中的特殊字符模式



我有一个字符串名称s,

String s = "He can speak English and Sinhala.[1]He<ename> has edited 12 CSE Staff Research Publications.[1][2]"

我想从字符串中删除[1][1][2]。请注意,我们可以在方括号内有任何数字,也可以有任何数量的方括号(如[number][number][number]...)。我试过用这个

String removedNoTag = s.replaceAll("[\[0-9\]]","");

是的,它删除了所有[数字]。。图案。但它也会删除文本中的所有数字(它还会删除12)。

有人能告诉我怎么做吗?

试试这个:String removedNoTag = s.replaceAll("\[\d+\]","");

您在正则表达式中转义了错误的方括号。您正在寻找的是:

String removedNoTag = s.replaceAll("\[[0-9]+\]","");

String removedNoTag = s.replaceAll("\[\d+\]","");

其中d是"[0-9]的缩写"。

您的括号定义了一组要删除的字符。该集合被定义为[]0-9。因此,检测到它们的任意组合(例如[]2][3][324]]1[[[)。

请尝试使用\[\d+\],这意味着开括号、一个或多个数字(d)和一个闭括号。

因为它删除了数字或括号字符的任何实例。

替换为:\[[0-9]+\]

最新更新