【发布时间】:2011-09-27 01:09:34
【问题描述】:
所以,简而言之,我正在尝试创建一个正则表达式,我可以在即将向我的 php 服务器提交 JSON 对象的 java 程序中使用它。
myString.replaceAll(myRegexString,"");
我的问题是,我对正则表达式绝对没有好处,此外,我需要正确转义字符,因为它存储在字符串中,然后还要在正则表达式中正确转义字符。天哪。
我的想法是这样的:
String myRegexString = "[\"',{}[]:;]"
第一个反斜杠是转义外部引号以在其中获得一个 "。然后让我震惊的是 {} 和 [] 也是正则表达式命令。我也会转义那些吗?喜欢:
String myRegexString = "[\"',\{\}\[\]:;]"
提前致谢。如果从上面的示例中不清楚,我此时真正关心的唯一角色是:
" { } [ ] , 和 ; : ' 用于一般 sqlinj 保护。
更新:
这是最终的正则表达式:
[\\Q\"',{}[\]:;\\E] 其他任何好奇的人。谢谢阿米特!
【问题讨论】:
-
对于那些转义字符,您需要使用双反斜杠。例如。
"[\\"',\\{\\}\\[\\]\\:;]"以便 Java 将反斜杠字符传递给正则表达式引擎。否则,Java 会查找不存在的特殊字符\[。 -
@Matt,
"不能双重转义(否则会发生编译时错误)。此外,{、)和:在字符类内部根本不需要转义。
标签: java regex json replaceall