我有一个字符串名称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]+\]