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"
我有这个字符串 "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"