java - 如何替换引号外的单词

标签 java regex string

我想在 Java 中使用 str.replaceAll 替换引号外的字符串,但不影响引号内的单词

如果我用 Pie 替换 Apple:

输入:苹果“苹果苹果苹果”
期望的输出:馅饼“Apple Apple Apple”

请注意引号内的单词未被修改

这将如何完成?所有帮助表示赞赏!

最佳答案

使用先行搜索 Apple 以确保它没有被引号包围:

(?=(([^"]*"){2})*[^"]*$)Apple

并替换为:

Pie

RegEx Demo


更新:

根据下面的评论,您可以使用:

代码:

String str = "Apple \"Apple\"";
String repl = str.replaceAll("(?=(([^\"]*\"){2})*[^\"]*$)Apple", "Pie");
//=> Pie "Apple" "Another Apple Apple Apple" Pie

关于java - 如何替换引号外的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771476/

相关文章:

Java API 与框架?

java - 如何在 RecyclerView 中显示 ArrayList?

php - 警告 : preg_match(): Compilation failed: unrecognized character after (? 或 (?-

ruby - gsub - 如何成为高效的 leet 生成器

java - 使用正则表达式将缩写重新组合在一起

java - 如何在浏览器中运行java gui

java - 从 HandlerInterceptor 抛出 HTTP 状态代码异常

Python 正则表达式 : finding sequence of chars inside a string

c - C语言中的字符串压缩

java - 如何通过 URL 路径解析、获取文件名,然后使用 JSTL 和 Java scriptlet 替换文件扩展名