开发者

How to match a url from a list of patterns in a textfile?

开发者 https://www.devze.com 2023-04-02 06:55 出处:网络
I have a text file that contains meta-urls in the following form: http://www.xyz.com/.*services/ http://www.xyz.com/.*/wireless

I have a text file that contains meta-urls in the following form:

http://www.xyz.com/.*services/
http://www.xyz.com/.*/wireless

I want to compare all the 开发者_运维问答patterns from that file with my URL, and execute an action if I find a match. This matching process is hard to understand for me.

Assuming splitarray[0] contains the first line of text file:

            String url = page.getWebURL().getURL();         
            URL url1 = new URL(url);

how can we compare url1 with splitarray[0]?

UPDATED

BufferedReader readbuffer = null;
        try {
            readbuffer = new BufferedReader(new FileReader("filters.txt"));
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        String strRead;


        try {
            while ((strRead=readbuffer.readLine())!=null){
                String splitarray[] = strRead.split(",");
                String firstentry = splitarray[0];
                String secondentry = splitarray[1];
                String thirdentry = splitarray[2];
                //String fourthentry = splitarray[3];
                //String fifthentry = splitarray[4];
                System.out.println(firstentry + " " + secondentry+ " " +thirdentry);
                URL url1 = new URL("http://www.xyz.com/ship/reach/news-and");

                Pattern p = Pattern.compile("http://www.xyz.com/.*/reach");
                Matcher m = p.matcher(url1.toString());

                if (m.matches()) {
                  //Do whatever
                    System.out.println("Yes Done");
                }



                }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Matching is working fine... But if I want that any url which start with the pattern giving in the splitarray[0] then do this... how we can implement this... As in the above case it is not matching but this url http://www.xyz.com/ship/w is from this pattern only http://www.xyz.com/.*/reach So any url that starts with this pattern.. just do this thing in the if loop... Any suggestions will be appreciated...!!


You are missing a step here. You first need to translate your URLs to a regular expression, or design a method to use those URLs, then only can you compare your URL url1 to those patterns.

Based on the patterns you have shown, I assume you are designing software for a xyz solution, like their routers. Therefore, your URLs probably fall in a simple pattern style, like http://www.xyz.com/regular-expression-here


I'm confused as to where the regexes are coming from. The text file? In any case, you'll have a hard time comparing url1 to any regexes because it's a URL object, and regex compares strings. So you'll want to stick with your String url instead.

Try this:

Pattern p = Pattern.compile(splitarray[0]);
Matcher m = p.matcher(url);

if (m.matches()) {
  //Do whatever
}

The m.matches() method checks whether the entire String you provide matches the pattern, which is probably what you want here. If you need to check whether part of your String matches, use m.find() instead.

Update

Since you're only looking to match the pattern at the beginning of the String, you'll want to use m.find() instead. The special character ^ only matches at the beginning of a String, so add that to the front of your regex, e.g.:

Pattern p = Pattern.compile("^" + splitarray[0]);

etc.

0

精彩评论

暂无评论...
验证码 换一张
取 消