gpt4 book ai didi

java - 从字符串中搜索并提取具有特定关键字的字符串

转载 作者:行者123 更新时间:2023-11-30 10:57:38 25 4
gpt4 key购买 nike

我正在处理一个 tsv 文件。我在一个条目中有一堆网址,我正在寻找带有“.ab”的特定网址。关键字。

这是我的数据:http://this/is/anexample.jpg,http://this/is/anexample.jpg,http://this/is/anexample.jpg,http://this/is/anexample.jpg,http://this/is/anexamplewith.AB.jpg

我希望输出为 http://this/is/anexamplewith.ab.jpg

这是我正在使用的:'^http://.*[.AB.jpg]' 但它给了我整个字符串。我可以使用什么正则表达式?

谢谢!

最佳答案

请注意,^http://.*[.AB.jpg] 匹配字符串开头的 http://.* 将换行符以外的每个字符匹配到(行的)末尾,以查找以下字符的最后一次出现 - .AB.jpg。最后你有 g - 因此整个字符串都匹配。

你可以使用

http:\/\/(?:(?!http:\/\/).)*\.ab\.(?:(?!http:\/\/).)*(?=$|http)

参见 demo

正则表达式匹配:

  • http:\/\/ - 匹配 http://
  • (?:(?!http:\/\/).)* - 匹配任何未开始子字符串 http:// 的符号(从而确保第一个 http://.ab. 之间的最短窗口)
  • \.ab\. - 文字 .ab.
  • (?:(?!http:\/\/).)* - 见上文
  • (?=$|http) - 告诉引擎在字符串结尾 ($) 或 http://之前停止的前瞻

Java 实现:

String str = "http://this/is/anexample.jpg,http://this/is/anexample.jpg,http://this/is/anexample.jpg,http://this/is/anexample.jpg,http://this/is/anexamplewith.AB.jpg";
Pattern ptrn = Pattern.compile("(?i)http://(?:(?!http://).)*\\.ab\\.(?:(?!http://).)*(?=$|http)");
Matcher matcher = ptrn.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(0));
}

sample demo program 的输出:

http://this/is/anexamplewith.AB.jpg

替换

要替换该匹配项,您只需要使用 replaceAll:

str = str.replaceAll("(?i)http://(?:(?!http://).)*\\.ab\\.(?:(?!http://).)*(?=$|http)", "");

关于java - 从字符串中搜索并提取具有特定关键字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32533169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com