0

特定の文字列 (URL を表す) が同じサブドメインからのものかどうかを調べたい。たとえば、http: //www.myDomain.com/someThing と myDomain.com の組み合わせは true を返します。以下も同様です。

http://myDomain.com ; http://www.domain.myDomain.com ;

しかし、次の (違法な) URL はそうではありません - 'http://.myDomain.com' (myDomain の前のドットに注意してください)

基本的に、myDomain.com の前にあるものを表す正規表現が必要です。これは一般に (http|https)://[az.] myDomainである必要があります。つまり、myDomain.com の直前にドット ( 0 回以上) - ただし、文字がない場合は、ドットも存在しないはずです。

その正規表現を組み立てる方法を知っている人はいますか?

4

3 に答える 3

1

これは、URL クラスと正規表現の組み合わせで実行できます。

    String url = "myDomain.com";
    String[] urlTest = {
        "http://www.myDomain.com/someThing",
        "http://myDomain.com",
        "http://www.domain.myDomain.com",
        "http://.myDomain.com",
        "http://example.com"

    };
    for (String urlx : urlTest) {
        System.out.print(urlx + "\t");
        try {
            URL u = new URL(urlx);
            String host = u.getHost();
            System.out.print("HOST=" + host + "\t");
            Matcher m = Pattern.compile("(.+\\.)?myDomain\\.com").matcher(host);
            System.out.println(m.matches());

        } catch (MalformedURLException ex) {
            System.out.println("false (no valid url)");
        }
    }
于 2012-07-24T16:35:58.147 に答える
1
http(s)?://([a-z]+\.)*myDomain\.com
于 2012-07-24T16:19:45.000 に答える
0

ここに例を置く:

Pattern aPattern = Pattern.compile("https://example.com[^\"<$\n \\[\\])]+", 
Pattern.MULTILINE);
            Matcher aMatcher = aPattern.matcher(Big String);
while (aMatcher.find()) {
logger.info(aMatcher.group());
}
于 2019-06-26T06:49:34.607 に答える