首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >URL中的正则表达式关键字匹配

URL中的正则表达式关键字匹配
EN

Stack Overflow用户
提问于 2012-06-28 16:22:25
回答 2查看 1.6K关注 0票数 0

我有一个大文件(20MB)的URL列表,我有一组关键字。如果关键字集与URL匹配,那么我想提取url。

Example:keyword=“联系方式”网址:http://www.365media.com/offices-and-contact.html

我需要一个正则表达式来匹配关键字与我的URL列表。

我的Java代码:

代码语言:javascript
复制
public class FileRead {

    public static void main(String[] ags) throws FileNotFoundException
    {
        Scanner in=new Scanner(new File("D:\\Log\\Links.txt"));
        String input;
        String[] reg=new String[]{".*About.*",".*Available.*",".*Author.*",".*Blog.*",".*Business.*",
    ".*Career.*",".*category.*",".*City.*",".*Company.*",".*Contain.*",".*Contact.*",".*Download.*",
    ".*Email.*"};
        while(in.hasNext())
        {
            input=in.nextLine();
            //for(String s:reg)
                patternFind(input,".*email.*");
        }

    }
    public static void patternFind(String input,String reg)
    {
        Pattern p=Pattern.compile(reg);
            Matcher m=p.matcher(input);
            while(m.find())
                System.out.println(m.group());
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-06-28 16:31:41

为什么你不能这样做:

代码语言:javascript
复制
For all line (URLs) in the file check if some of your pattern works on the URL

代码是非常明显的

票数 1
EN

Stack Overflow用户

发布于 2012-06-28 16:40:52

我将给出一个通用的解决方案。我认为你应该能够将这个想法应用到你的代码中。

假设您在文件中有一个空关键字列表,并将其读取到String[]中,或者在String[]中硬编码关键字列表,例如:

代码语言:javascript
复制
String keywords[] = {"about", "available", "email"};

对于所有关键字,使用Pattern.quote()确保它们被识别为文字字符串。然后用条形字符|作为分隔符(OR)连接关键字,并用括号()将所有关键字括起来。最终结果将是这样的。或者,您可以自己查看关键字,然后编写不带引号\Q\E的正则表达式。如果您确定关键字不包含正则表达式,也可以忽略Pattern.quote()步骤。

代码语言:javascript
复制
(\Qabout\E|\Qavailable\E|\Qemail\E)

.*添加到2个末尾,使其与URL的其余部分匹配,并在开头添加(?i),以启用不区分大小写的匹配。

代码语言:javascript
复制
(?i).*(\Qabout\E|\Qavailable\E|\Qemail\E).*

然后,您可以编译Pattern并在每一行输入上调用matcher(inputString).matches(),以检查该URL是否包含该关键字。

如果关键字在URL中太常见,例如"com“、"net”、"www",而您想要使搜索更细粒度,则必须进行更多的调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11240693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档