Java 正则表达式,替换某些字符,除非它与模式匹配

Java regex, replace certain characters except if it matches a pattern

我有这个字符串 "person","hobby","key",我想删除除 key 之外的所有单词的 " ",因此输出将为 person,hobby,"key"

String str = "\"person\",\"hobby\",\"key\"";
System.out.println(str+"\n");

str=str.replaceAll("/*regex*/","");

System.out.println(str); //person,hobby,"key"

您可以使用以下模式:

\"(?!key\")(.+?)\"

并替换为</code></p> <p><strong>详情:</strong></p> <ul> <li><p><code>\" - 匹配一个双引号字符。

  • (?!key\") - Negative Lookahead(后面不跟单词“key”和另一个双引号)。

  • (.+?) - 匹配一个或多个字符(惰性)并在组 1 中捕获它们。

  • \" - 匹配另一个双引号字符。

  • 替换: </code> - 向后引用第 1 组中匹配的内容。</p> </li> </ul> <p><strong><a href="https://regex101.com/r/jnCojC/2" rel="nofollow noreferrer">Regex demo</a></strong>.</p> <p>这是一个完整的例子:</p> <pre><code>String str = "\"person\",\"hobby\",\"key\""; String pattern = "\"(?!key\")(.+?)\""; String result = str.replaceAll(pattern, ""); System.out.println(result); // person,hobby,"key"

    Try it online.