使用java删除另一个双引号中的双引号

使用java删除另一个双引号中的双引号,java,regex,string,replace,double-quotes,Java,Regex,String,Replace,Double Quotes,我有一个字符串,在另一个双引号中包含双引号 例如: 输入1: <span style="font-family: pp-sans-big-light, "Noto Sans", Calibri, Trebuchet, Arial, "sans serif"; font-size: 17px; text-align: start; background-color: rgb(255, 255, 255);" class="transaction" name="details"> How

我有一个字符串,在另一个双引号中包含双引号

例如:

输入1:

<span style="font-family: pp-sans-big-light, "Noto Sans", Calibri, Trebuchet, Arial, "sans serif"; font-size: 17px; text-align: start; background-color: rgb(255, 255, 255);" class="transaction" name="details"> How are you</span>
我也尝试过jsoup。但没有一个成功。选项2适用于输入2,但不适用于输入1。选项1也不起作用。有人能帮我吗?我浏览了stackoverflow中所有现有的答案,没有一个有用。

**

我以前的答案不起作用,但这是一个有趣的问题,我想我已经找到了解决办法

所以首先确定你想要的引号的开始和结束。这个正则表达式的作用是:

 ">|\"? [a-z]+="
如果在此正则表达式上拆分,则结果字符串中的任何引号都是不必要的

 let originalString = "<span title="Conditional (A/B) Content on "Transactions.Recipient Name"" class="transaction" name="details"> Transaction Recipient</span>";
 originalString.split(/">|\"? [a-z]+="/)
**更新

我以前的答案不起作用,但这是一个有趣的问题,我想我已经找到了解决办法

所以首先确定你想要的引号的开始和结束。这个正则表达式的作用是:

 ">|\"? [a-z]+="
如果在此正则表达式上拆分,则结果字符串中的任何引号都是不必要的

 let originalString = "<span title="Conditional (A/B) Content on "Transactions.Recipient Name"" class="transaction" name="details"> Transaction Recipient</span>";
 originalString.split(/">|\"? [a-z]+="/)

我有一种感觉,这里没有描述一些案例。您如何知道哪些引号“在”其他引号内,而不仅仅是顶级引号?我认为需求不清楚。嗨@arcadeblast77,我们在这里考虑的字符串是一个html属性。我想你可以从那一点开始。因此,对于该属性值,我需要保留外部双引号并删除所有内部双引号删除我的响应,因为它没有捕获一些边缘情况。我怀疑这个问题在我们没有看到的堆栈的某个部分或库中是可以解决的。我知道你提到要尝试jsoup,但我还是倾向于使用一个库。(如果我知道是哪一个,我会发布。)还有,这有可能是XY问题吗?你为什么有这根绳子?无效的HTML从何而来?@user207421我们的webapp中有一个aloha编辑器,它引入了无效的HTML。我感觉有些情况在这里没有描述。您如何知道哪些引号“在”其他引号内,而不仅仅是顶级引号?我认为需求不清楚。嗨@arcadeblast77,我们在这里考虑的字符串是一个html属性。我想你可以从那一点开始。因此,对于该属性值,我需要保留外部双引号并删除所有内部双引号删除我的响应,因为它没有捕获一些边缘情况。我怀疑这个问题在我们没有看到的堆栈的某个部分或库中是可以解决的。我知道你提到要尝试jsoup,但我还是倾向于使用一个库。(如果我知道是哪一个,我会发布。)还有,这有可能是XY问题吗?你为什么有这根绳子?无效的HTML从何而来?@user207421我们的Web应用程序中有一个aloha编辑器,它引入了无效的HTML。谢谢你的时间,克里斯!!好建议!。字符串中可能有多个属性,因此前缀部分将起作用。识别后缀将不起作用。你能考虑一下这个用例交易接收者吗?@ KSHIRMORHANAVELU我更新了我的答案,这个解决方案对你有用吗?再次感谢克里斯!今天将测试您的解决方案并更新。感谢您的时间,克里斯!!好建议!。字符串中可能有多个属性,因此前缀部分将起作用。识别后缀将不起作用。你能考虑一下这个用例交易接收者吗?@ KSHIRMORHANAVELU我更新了我的答案,这个解决方案对你有用吗?再次感谢克里斯!今天将测试您的解决方案并向您更新。
public static void main(String[] args) throws Exception{
        String tempNodeValue = /**INPUT_HERE**/;
        tempNodeValue = tempNodeValue.replaceAll("\"(\\b[^\"]+|\\s+)?\"(\\b[^\"]+\\b)?\"([^\"]+\\b|\\s+)?\"","\"$1$2$3\"");
        System.out.println(tempNodeValue);
    }
 ">|\"? [a-z]+="
 let originalString = "<span title="Conditional (A/B) Content on "Transactions.Recipient Name"" class="transaction" name="details"> Transaction Recipient</span>";
 originalString.split(/">|\"? [a-z]+="/)
 let attributeContents = [
      "<span",
      "Conditional (A/B) Content on \"Transactions.Recipient Name\"",
      "transaction",
      "details",
      " Transaction Recipient</span>"
 ];
 for(let index in attributeContents) {
      let attributeValue = attributeContents[index];
      originalString = originalString.replace(attributeValue, attributeValue.replace(/"/g, "");
 }
 // double comments have now been removed from the original string.