如何知道使用正则表达式时替换了哪个字符

时间:2011-06-10 06:30:17

标签: java regex

String string = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġs not cool \"oops" ;    
    string = string.replaceAll("[^a-zA-Z0-9 ]+", ... );

问题是我想将非字母数字非空格字符附加到转义字符。即。

" -> \" 
' -> \'.

那么究竟应该是replaceAll方法中的第二个参数呢? 或者还有其他很酷的方式(我不想硬编码)

1 个答案:

答案 0 :(得分:3)

如果这是Java(我添加了相关标签),那么你可以做

String resultString = subjectString.replaceAll("[\\W\\S]", "\\\\$0");

将替换任何非alnum / non-space字符及其转义对应字符。

请注意,正则表达式不会尝试检测角色是否已被转义。您还应该知道Java中的\W不能识别区域设置,所以它也会匹配Unicode字母。