我有一个字符串名称,
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
)。
有人可以告诉我怎么做吗?
答案 0 :(得分:3)
试试这个:String removedNoTag = s.replaceAll("\\[\\d+\\]","");
答案 1 :(得分:3)
您正在逃避正则表达式中的错误括号。你在寻找的是:
String removedNoTag = s.replaceAll("\\[[0-9]+\\]","");
或
String removedNoTag = s.replaceAll("\\[\\d+\\]","");
\d
是[0-9]
的缩写形式。
答案 2 :(得分:2)
您的外部括号定义了一组要删除的字符。该集定义为[
,]
和0-9
。因此,检测到这些的任意组合(例如[]
,2
,]
,[3]
,[324]
,]1[[[
)。
而是尝试\\[\\d+\\]
,这意味着开括号,一个或多个数字(\d
)和一个结束括号。
答案 3 :(得分:1)
因为它删除了数字或括号的任何字符实例。
替换为:\\[[0-9]+\\]