擅长:python、mysql、java
<h2>简单解决方案</h2>
<p>Scala中的一个简单解决方案:</p>
<pre class="lang-scala prettyprint-override"><code>scala> val input = """"som"ething"","s"ometh8 ing""""
input: String = "som"ething"","s"ometh8 ing"
scala> val values = input.split("\",\"").map(_.filter(c => c.isLetterOrDigit || c.isWhitespace))
values: Array[String] = Array(something, someth8 ing)
scala> val output = values.mkString("\"", "\",\"", "\"")
output: String = "something","someth8 ing"
</code></pre>
<p>假设您的值中从来没有<code>","</code>,但是如果您有,那么无论如何也没有办法明确地修复您的CSV。在</p>
<p>这不是最佳的解决方案速度或内存,但它是短而简单的。在</p>
<h2>编辑:正则表达式解决方案</h2>
<p>如果您真的想要一些正则表达式,请享受:</p>
^{pr2}$
<p>这将尝试在输入的开头或结尾处匹配<code>"</code>,或者<code>","</code>任何其他地方或任何认可的字符。如果其中任何一个匹配,它将转到第一个捕获组。否则,它匹配任何字符(<code>.</code>),但不在组中捕获它,因此第一个组保持为空。然后,匹配的子串替换为<code>$1</code>,这是第一个捕获组的内容。在</p>
<p>我仍然认为第一个解决方案更干净,更容易理解。在</p>