Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 前置字符集_Java_Regex - Fatal编程技术网

Java 前置字符集

Java 前置字符集,java,regex,Java,Regex,我需要为给定字符串中一个集合中出现的所有字符(例如“\”)预先加上一个反冲 例如,给定字符串 He said "I don't know." 它应该被替换为 He said \"I don\'t know.\" 如何在Java中执行此操作?尝试以下正则表达式: ["'\\] 为了在Java字符串文本中使用这个,需要转义双引号和两个反斜杠 替换字符串应如下所示: \\$0 这里$0是对匹配的引用。反斜杠需要转义,否则$将变成文字。同样,反斜杠需要在Java字符串文本中转义。生成的代码如下所

我需要为给定字符串中一个集合中出现的所有字符(例如“\”)预先加上一个反冲

例如,给定字符串

He said "I don't know."
它应该被替换为

He said \"I don\'t know.\"

如何在Java中执行此操作?

尝试以下正则表达式:

["'\\]
为了在Java字符串文本中使用这个,需要转义双引号和两个反斜杠

替换字符串应如下所示:

\\$0
这里$0是对匹配的引用。反斜杠需要转义,否则$将变成文字。同样,反斜杠需要在Java字符串文本中转义。生成的代码如下所示:

s = s.replaceAll("[\"'\\\\]", "\\\\$0");

联机查看:

尝试使用以下正则表达式

要查找引号/[']/g 替换引号\$&
希望这能奏效。

可能有更简单的方法,但这里有一个

     Pattern p = Pattern.compile("(\"|\')");

     StringBuilder sb = new StringBuilder();
     int start = 0;
     Matcher m = p.matcher(s);
     while (m.find()) {
           int end = m.start();
           sb.append(s.substring(start, end));
           sb.append("\\").append(m.group(1));
           start = m.end();
     }
     sb.append(s.substring(start));

     String result = sb.toString();

其中s是您的输入字符串

感谢您的解释和工作代码!我从未见过ideone,它看起来很棒。您的正则表达式与反斜杠不匹配,替换字符串中的反斜杠需要用另一个反斜杠转义,这是假设您使用的是JavaScript。关于Java解决方案,请参见@Mark的答案。我刚刚从gskinner应用程序中给出了通用格式。。它不是为一种特定的语言而设计的。谢谢你的评论。由ActionScript提供支持,ActionScript遵循ECMAScript正则表达式标准,但实际上更强大。有很多在线测试人员;如果您使用与问题中指定的口味相匹配的答案,您的答案将更有帮助。对于Java来说,这是一个很好的选择。