我想知道我的正则表达式有什么问题。我试图用这段代码删除字符串中的某些字符
array[i] = array[i].replaceAll("[.,;:?!\"')\\(]","");
除了\字符外,一切都有效,它没有从字符串中删除。我也尝试了这段代码
array[i] = array[i].replaceAll("[.,;:?!\"')(\\]","");
它给了我一个错误。
我做错了什么?
答案 0 :(得分:1)
尝试以下RegEx:
array[i] = array[i].replaceAll("[.,;:?!\\\\\"')(]","");
要匹配java中的单个\
,您需要为每个反斜杠使用\\
。您需要总共四个才能匹配\\
或\
。希望不要混淆你。这将匹配:
What is is | What Java thinks it is | What is actually is
, | , | ,
; | ; | ;
: | : | :
? | ? | ?
! | ! | !
\\\\ | \\ | \
\" | " | "
' | ' | '
) | ) | )
( | ( | (
正如您在上面的图表中所看到的,它可能会与Java RegExes中的所有反斜杠混淆,我真的不知道更好的解决方案,但要计算它们(这一个与那个匹配,这与等等。)。