从字符串中过滤某些文本

时间:2018-03-27 15:32:33

标签: java android regex string filter

对于我自己设置的项目,我必须从URL中过滤掉10个字符的字符串。

例如:

  

https://www.amazon.de/gp/product/SOMETEXTHERE/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

我想过滤掉 SOMETEXTHERE 。 但是这个角色正在改变,所以我不能只说它总是一样的。

是否有任何现有功能?

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式执行此任务:

final String string = "https://www.amazon.de/gp/product/B001VGASYA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1";
final String replacement = String.format("$1%s$3", "REPLACED");
final String result = string.replaceFirst("(.*product\\/)([^\\/]+)(.*)", replacement); // or .replaceAll()
System.out.println(result);

<强>故障:

(.*product\\/)([^\\/]+)(.*)

  • 第一捕获小组(.*product\\/)
    • .*匹配任何字符(行终止符除外)
    • *量词 - 零和无限次之间的匹配,尽可能多次,根据需要回馈(贪婪)产品与字符产品字面匹配(区分大小写)
    • \/字面匹配字符/(区分大小写)
  • 第二捕获小组([^\\/]+)
    • 匹配[^\/]+
    • 下方列表中不存在的单个字符
    • +量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
    • \/字面匹配字符/(区分大小写)
  • 第三捕获小组(.*)
    • .*匹配任何字符(行终止符除外)
    • *量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)

答案 1 :(得分:2)

如果您确定只有您提到的文字会发生变化,您可以将字符串拆分为&#34; /&#34;然后从列表中取出正确的字符串。

String URL = "https://www.amazon.de/gp/product/B001VGASYA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1";
    String targetString = Arrays.asList(URL.split("/")).get(5);