(){}[]^$|?*+.\ 这些元字符, 都需要转义,其他的都不要转义了,如果把不需要转义的转义了,在js中不会有啥错,只是在java中,把不该转的转了 ,就会,报错。编译器是通不过的。。
举个栗子:
例如有这么个字符串android:id="@+id/abc" 需要提取出其中的abc,那么针对通用的提取,正则表达式应该这样写: (?<=android:id="@\+id/)(.)+(?=")
放到java中运行,那么需要把所有的\变成\\,然后就成这样了 (?<=android:id="@\\+id/)(.)+(?=") ,这样放进去是有问题的,结果是这样
so,因为java中string中的不能含有"",必须转义。那么把"变成\" 就可以了
另外还发现一个问题,在正则中对于/,可以转义,也可以不转义,java中是不会报错的。所以,上面的正则也可以写成:
(?<=android:id=\"@\\+id\\/)(.)+(?=\")