数组replaceAll()错误

时间:2015-07-20 04:30:38

标签: java regex

我想知道我的正则表达式有什么问题。我试图用这段代码删除字符串中的某些字符

array[i] = array[i].replaceAll("[.,;:?!\"')\\(]","");

除了\字符外,一切都有效,它没有从字符串中删除。我也尝试了这段代码

array[i] = array[i].replaceAll("[.,;:?!\"')(\\]","");

它给了我一个错误。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试以下RegEx:

array[i] = array[i].replaceAll("[.,;:?!\\\\\"')(]","");

要匹配java中的单个\,您需要为每个反斜杠使用\\。您需要总共四个才能匹配\\\。希望不要混淆你。这将匹配:

What is is | What Java thinks it is | What is actually is
,          | ,                      | ,
;          | ;                      | ;
:          | :                      | :
?          | ?                      | ?
!          | !                      | !
\\\\       | \\                     | \
\"         | "                      | "
'          | '                      | '
)          | )                      | )
(          | (                      | (

正如您在上面的图表中所看到的,它可能会与Java RegExes中的所有反斜杠混淆,我真的不知道更好的解决方案,但要计算它们(这一个与那个匹配,这与等等。)。