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来说,这是一个很好的选择。