从输出Java中删除双引号

时间:2018-02-02 03:09:15

标签: java regex

我正在尝试从字符串中提取url。但是我无法跳过输出中的双引号。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Main {
  public static void main(String[] args) {
    String s1 = "<a id=\"BUTTON_LINK\" style=\"%%BUTTON_LINK%%\" target=\"_blank\" href=\"https://||domainName||/basketReviewPageLoadAction.do\">%%CHECKOUT%%</a>";
    //System.out.println(s1);
    Pattern pattern = Pattern.compile("\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))");
    Matcher matcher = pattern.matcher(s1);

    if(matcher.find()){
      String url = matcher.group(1);
      System.out.println(url);
    }

  }
}

我的输出是:

"https://||domainName||/basketReviewPageLoadAction.do"

预期输出为:

https://||domainName||/basketReviewPageLoadAction.do

我无法进行字符串替换。我在这个输出中添加了几个get参数并将其附加回原始字符串。

5 个答案:

答案 0 :(得分:1)

您可以尝试以下选项之一:

System.out.println(url.replaceAll("^\"|\"$", ""));
System.out.println(url.substring(1, url.length()-1));

答案 1 :(得分:1)

正则表达式(?<=href=")([^\"]*) 替换$1?params...

<强>详情:

  • (?<=)积极的外观
  • ()捕获小组
  • [^]匹配列表中不存在的单个字符
  • *零和无限次之间的匹配
  • $1第1组。

Java代码

通过使用函数replaceAll,您可以将参数?abc=12添加到捕获组$1的末尾,在这种情况下href

String text = "<a id=\"BUTTON_LINK\" style=\"%%BUTTON_LINK%%\" target=\"_blank\" href=\"https://||domainName||/basketReviewPageLoadAction.do\">%%CHECKOUT%%</a>";
text = text.replaceAll("(?<=href=\")([^\"]*)", String.format("$1%s", "?abc=12"));
System.out.print(text);

<强>输出

<a id="BUTTON_LINK" style="%%BUTTON_LINK%%" target="_blank" href="https://||domainName||/basketReviewPageLoadAction.do?abc=12">%%CHECKOUT%%</a>

Code demo

答案 2 :(得分:0)

很丑,看起来很有效。希望得到这个帮助。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

class Main {
    public static void main(String[] args) {
        String s1 = "<a id=\"BUTTON_LINK\" style=\"%%BUTTON_LINK%%\" target=\"_blank\" href= \"https://||domainName||/basketReviewPageLoadAction.do\">%%CHECKOUT%%</a>";
        //System.out.println(s1);
        Pattern pattern = Pattern.compile("\\s*(?i)href\\s*=\\s*(\"([^\"]*)\"|'([^']*)'|([^'\">\\s]+))");
        Matcher matcher = pattern.matcher(s1);

        if (matcher.find()) {
            String url = Stream.of(matcher.group(2), matcher.group(3),
                    matcher.group(4)).filter(s -> s != null).collect(Collectors.joining());
            System.out.print(url);

        }

    }
}

答案 3 :(得分:0)

此解决方案目前有效。

Pattern pattern = Pattern.compile("\\s*(?i)href\\s*=\\s*\"([^\"]*)");

答案 4 :(得分:-1)

你会试试这个,

s1 = s1.Replace("\"", "");