1

我有一个字符串名称 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\\]]","");

是的,它删除了所有 [number].. 模式。但它也会删除文本中的所有数字(它12也会删除)。

谁能告诉我该怎么做?

4

4 回答 4

3

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

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

或者

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

作为\d[0-9].

于 2012-08-02T15:18:56.157 回答
3

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

于 2012-08-02T15:17:59.353 回答
2

您的括号定义了一组要删除的字符。该集合定义为[和。因此可以检测到这些的任何组合(例如, , , , , )。]0-9[]2][3][324]]1[[[

取而代之的是 try \\[\\d+\\],这意味着左括号、一个或多个数字 ( \d) 和一个右括号。

于 2012-08-02T15:18:59.677 回答
1

因为它删除了一个字符的任何实例,无论是数字还是括号。

用。。。来代替 :\\[[0-9]+\\]

于 2012-08-02T15:19:21.947 回答