java.util.regex.PatternSyntaxException Android

时间:2013-09-25 12:33:53

标签: java android

我正在替换字符串的一部分,如下所示

biblebook.replaceAll("[{\"-bnumber\":\"1\",\"-bname\":\"Genesis\",\"CHAPTER\":","[");

但我的日志显示以下错误

09-25 16:33:47.421: W/System.err(5116): java.util.regex.PatternSyntaxException: Missing closing bracket in character class near index 46:
    09-25 16:33:47.421: W/System.err(5116): [{"-bnumber":"1","-bname":"Genesis","CHAPTER":
    09-25 16:33:47.421: W/System.err(5116):                                               ^
    09-25 16:33:47.421: W/System.err(5116):     at java.util.regex.Pattern.compileImpl(Native Method)
    09-25 16:33:47.421: W/System.err(5116):     at java.util.regex.Pattern.compile(Pattern.java:400)
    09-25 16:33:47.429: W/System.err(5116):     at java.util.regex.Pattern.<init>(Pattern.java:383)
    09-25 16:33:47.429: W/System.err(5116):     at java.util.regex.Pattern.compile(Pattern.java:374)
    09-25 16:33:47.429: W/System.err(5116):     at java.lang.String.replaceAll(String.java:1784)
    09-25 16:33:47.429: W/System.err(5116):     at .Index$loadingTask.doInBackground(Index.java:383)

任何想法?

更新这是我的字符串

的一部分
  

[{ “ - B-号码”: “1”, “ - BNAME”: “创世纪”, “章”:[{ “ - cnumber”: “1”, “VERS”:[{ “ - vnumber”:” 1" , “#文”:“金   开始,Dieucréalescieux et la   terre。“},{” - vnumber“:”2“,”#text“:”Laterreétaitinformeet vide:il y   avaitdesténèbresàlasurface de l'abîme,et l'esprit de Dieu se   mouvait au-dessus des eaux。“},{” - vnumber“:”3“,”#text“:”Dieu dit:Que   lalumièresoit! Etlalumièreuf。“},{” - vnumber“:”4“,”#text“:”Dieu   vit quelalumièreétaitbonne; etDieuséparalalumièred'avecles   ténèbres。“},{” - vnumber“:”5“,”#text“:”Dieu appelalalumièrejour,et   il appelalesténèbresnuit。 Ainsi,il y eut un soir,et il y eut un   matin:ce fut le premier jour。“},{” - vnumber“:”6“,”#text“:”Dieu dit:   Qu'il y aituneétenduentreles eaux,etqu'elelsépareleseaux   d'avec les eaux。“},{” - vnumber“:”7“,”#text“:”Et Dieu fit l'étendue,et   ilsséparaleseaux qui sont au-dessous de l'étendued'aveveles eaux   qui sont au-dessusdel'étendue。 Et cela fut   ainsi。“},{” - vnumber“:”8“,”#text“:”Dieu appela l'étendueciel。 AINSI,   il y eut un soir,et il y eut un matin:ce fut le second   jour。“},{” - vnumber“:”9“,”#text“:”Dieu dit:Que les eaux qui sont   au-dessous du ciel se rassemblent en un seul lieu,et que le sec   paraisse。 Et cela fut ainsi。“},{” - vnumber“:”10“,”#text“:”Dieu appela   le sec terre,et il appela l'amas des eaux mers。 Dieu vit que cela   étaitbon。“},{” - vnumber“:”11“,”#text“:”Puis Dieu dit:Que la terre   生产de la verdure,de l'herbe portant de la semence,des arbres   水果商donnant du fruit selonleurespèceetayant en eux leur   semence sur la terre。 Et cela fut   ainsi。“},{” - vnumber“:”12“,”#text“:”La terre produisit de la verdure,   de l'herbe portant de la semence selonsonespèce,et des arbres   donnant du fruit et ayant en eux leur semence selonleurespèce。妙   vit quecelaétaitbon。“},{” - vnumber“:”13“,”#text“:”Ainsi,il y eut un   soir,et il y eut un matin:ce futletroisième   jour。“},{” - vnumber“:”14“,”#text“:”Dieu dit:Qu'il y ait des Luminaires   dans l'étendueduciel,pouréparerlejour d'avec la nuit; que ce   so signes pour marquerlesépoques,les jours et les   années;“},{” - vnumber“:”15“,”#text“:”et qu'ils servent de Luminaires   dans l'étendueduciel,pouréclairerlaterre。 Et cela fut   ainsi。“},{” - vnumber“:”16“,”#text“:”Dieu fit les deux grands   灯具,le plus grand luminairepourprésideraujour,et le plus   petit luminairepourprésideràlanuit; il fit aussi les   étoiles。“},{” - vnumber“:”17“,”#text“:”Dieulesplaçadansl'étenduedu   ciel,pouréclaireratterre,“},{” - vnumber“:”18“,”#text“:”倒   présideraujouretàlanuit,etpoursséparerlalumièred'avecles   ténèbres。 Dieu vit quecelaétait   bon。“},{” - vnumber“:”19“,”#text“:”Ainsi,il y eut un soir,et il y eut   un matin:ce futlequatrièmejour。“},{” - vnumber“:”20“,”#text“:”Dieu   dit:Que les eaux produisent en abondance des animaux vivants,et que   des oiseaux volent sur la terre vers l'étenduedu   ciel。“},{” - vnumber“:”21“,”#text“:”Dieucréalesgrands poissons et   tous les animaux vivants qui se meuvent,et que les eaux produisirent   en abondance selonleurespèce; ilcréaaussitoutoiseauailéselon   儿子埃斯佩斯。 Dieu vit quecelaétait   bon。“},{” - vnumber“:”22“,”#text“:”Dieulesbénit,en disant:Soyez   féconds,multipliez,et remplissez les eaux des mers; et que les   oiseaux multiplient sur la terre。“},{” - vnumber“:”23“,”#text“:”Ainsi,   il y eut un soir,et il y eut un matin:ce futlecinquième   jour。“},{” - vnumber“:”24“,”#text“:”Dieu dit:Que la terre produise des   animaux vivants selonleurespèce,dubétail,des reptiles et des   animaux terrestres,selonleurespèce。 Et cela fut   ainsi。“},{” - vnumber“:”25“,”#text“:”Dieu fit les animaux de la terre   selonleurespèce,lebétailselonsonespèce,et tous les reptiles de   la terre selonleurespèce。 Dieu vit quecelaétait   bon。“},{” - vnumber“:”26“,”#text“:”Puis Dieu dit:Faisons l'hommeà   notre image,selon notre ressemblance,et qu'il domine sur les   poissons de la mer,sur les oiseaux du ciel,surlebétail,sur toute

3 个答案:

答案 0 :(得分:6)

你必须使用双反斜杠([)来转义方括号(]\\),因为它们在regexp中有一个函数...(编辑:当然大括号{ }

biblebook.replaceAll("\\[\\{\"-bnumber\":\"1\",\"-bname\":\"Genesis\",\"CHAPTER\":","\\[");

另外:我发现使用在线正则表达式检查器like this可以帮助我更快地完成工作

答案 1 :(得分:2)

如果您想要替换那个确切的字符串而不想使用正则表达式,请使用biblebook.replace()代替biblebook.replaceAll()

答案 2 :(得分:1)

如果要将[作为正则表达式的一部分包含在内,则需要关闭括号。 [{\"-bnumber\":\"1\",\"-bname\":\"Genesis\",\"CHAPTER\]

但是如果括号[是字符串的一部分,那么你需要以

的形式转义

\\[{\"-bnumber\":\"1\",\"-bname\":\"Genesis\",\"CHAPTER\