1

URL を http または https に一致させる Java 正規表現を作成する必要がありますが、URL を特定のファイル拡張子と一致させてはなりません。

次の式を使用して http または https で URL を取得できますが、特定の拡張子 (例: js|css|jpg など) の URL を除外する 2 番目の部分を完了することができません。否定を使用する必要があると思いますが、どうすればいいのかわかりません。

String regex = "\\s*(?i)(http|https)\\s*://\\s*((\"[^\"]*\"|'[^']*'|([^'\">\\s]+)))";

この要件を満たすためにこの正規表現を変更するのを手伝ってください。

4

2 に答える 2

1

後ろを見るにはアンカーが必要です - 正規表現を参照して、必要な式を提供するURL に一致させてください。現在使用している正規表現は、許可されていない文字を含む不正な形式の URL と一致します。式を確認するには、次のサイトを参照してください: http://www.regexplanet.com/advanced/java/index.html

于 2012-11-11T01:35:00.287 に答える
1

Java でこれを実装する簡単な方法は、Patternクラス (からjava.util.regex) を使用することです。あなたが提案していることを達成するには、2 つの別々の正規表現オブジェクトを使用して URL の条件を確認できます。例(regex質問の文字列を使用):

Scanner in = new Scanner(System.in);
String input = in.nextLine();
Pattern one = Pattern.compile(regex);
Pattern two = Pattern.compile("([^\s]+(\.(?i)(js|css|jpg|etc))$)");
if(one.matcher(input).matches() && !two.matcher(input).matches()) 
    System.out.println("It matches!");
else System.out.println("Nope!");

要するに、2 つの Pattern オブジェクトを使用すると、URL の入力文字列について複数の側面を考慮するため、コードが読みやすくなり、管理しやすくなります。

于 2012-11-10T17:50:24.463 に答える