REGEX,删除空格和所有其他字符

时间:2018-04-27 05:55:12

标签: java regex regex-lookarounds

尝试转换此示例

Some Nice Article on amazon https://www.amazon.de/gp/product/ADKLHJADK/ref=as_li_ss_tl?ie=UTF8&pd_rd_i=B01J7LLL9Q&pd_rd_r=a8c7bb4b-49da-11e8-ad28-014ae5dc2f42&pd_rd_w=9QOk2&pd_rd_wg=zc1s7&pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=&pf_rd_r=VF3C7MDNZ741H8S13AYV&pf_rd_t=36701&pf_rd_p=1c175abe-9bc7-490b-bbe1-2caf7e752c98&pf_rd_i=desktop&linkCode=ll1

到这个

https://www.amazon.de/gp/product/YXZ91ALI91/

使用正则表达式在java中处理此问题的正确或最佳方法是什么? 因为我的选择看起来很脏...

https://www.amazon.de/gp/product/[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]/

获取亚马逊链接的工作解决方案:

第一部分直到|适用于每个桌面复制和粘贴,以及使用移动应用程序的共享按钮复制后的所有内容。

https://www.amazon.de/gp/product/ [^ /] + / | HTTPS:?//www.amazon.de/dp/ [^ /] + /

3 个答案:

答案 0 :(得分:3)

你的正则表达式将如下所示:

https:\/\/www.amazon.de\/gp\/product\/[^\/]+\/?

[^\/]表示"一切不会削减"

您可以在此处进行测试:https://regex101.com/r/wwFmMw/1

答案 1 :(得分:1)

有很多方法。这种方法可以假设它是产品之后的部分。

 Pattern pat = Pattern.compile("^.*(https://.*/product/[^\\/]*?/).*");

示例:

public static void main(String[] args)
{
    String inp = "Some Nice Article on amazon "
            + "https://www.amazon.de/gp/product/ADKLHJADK/ref=as_li_ss_tl"
            + "?ie=UTF8&pd_rd_i=B01J7LLL9Q&pd_rd_r"
            + "=a8c7bb4b-49da-11e8-ad28-014ae5dc2f42&pd_rd_w"
            + "=9QOk2&pd_rd_wg=zc1s7&pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=&pf_rd_r"
            + "=VF3C7MDNZ741H8S13AYV&pf_rd_t="
            + "36701&pf_rd_p=1c175abe-9bc7-490b-bbe1-2caf7e752c98&pf_rd_i"
            + "=desktop&linkCode=ll1";


    Pattern pat = Pattern.compile("^.*(https://.*/product/[^\\/]*?/).*");

    Matcher m = pat.matcher(inp);

    if (m.matches() && m.groupCount() > 0) {
        System.out.println(m.group(1));
    }

}

我的想法是找到" https:"的开头,然后找到任何东西,然后"产品/",然后找到任何东西直到下一个" /&# 34。

结果输出:

  

https://www.amazon.de/gp/product/ADKLHJADK/

答案 2 :(得分:0)

一线解决方案:

String result = myStrValue.replaceAll('.*(https://www\.amazon\.de/gp/product/\w+/).*', '$1');

\ w +表示至少一个单词字符:[a-zA-Z_0-9]

在这里试试java正则表达式:https://www.freeformatter.com/java-regex-tester.html#ad-output