1

私は文字列名を持っています、

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("\\[\\d+\\]","");

于 2012-08-02T15:17:59.353 に答える
3

正規表現で間違った角かっこをエスケープしています。あなたが探しているのは:

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

また

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

\dの短縮形です[0-9]

于 2012-08-02T15:18:56.157 に答える
2

外側角かっこは、削除する文字のセットを定義します。そのセットは、、およびとして定義さ[]ます0-9[]したがって、それらの任意の組み合わせが検出されます(たとえば、、、、、、、2)。][3][324]]1[[[

代わりに\\[\\d+\\]、を試してください。これは、開き角かっこ、1つ以上の数字(\d)、および閉じかっこを意味します。

于 2012-08-02T15:18:59.677 に答える
1

数字または角かっこである文字のインスタンスをすべて削除するためです。

と置換する :\\[[0-9]+\\]

于 2012-08-02T15:19:21.947 に答える