0

私はJavaの初心者で、次のような正規表現を見つけようとしています:

  1. IP ではなくホストのみ
  2. ホストにも http または https タグが付いている場合があります。
  3. ホストは異なる TLD を持つことができます。

私は試し[a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+ましたが、私が期待したものを得られません。誰かがこれについて私を助けることができれば、それは素晴らしいことです.

4

2 に答える 2

2
public static void main(String[] args) {
Pattern pattern = Pattern.compile ("(?:https?://)?(?:[-a-zA-Z0-9_]+\\.)*[-a-zA-Z0-9_]*[-a-zA-Z_][-a-zA-Z0-9_]*(?:\\.[-a-zA-Z0-9_]+)*");

System.out.println(pattern.matcher("127.0.0.1").matches()); // false
System.out.println(pattern.matcher("1.0.0.127.in-addr.arpa").matches()); // true
System.out.println(pattern.matcher("localhost").matches()); // true
System.out.println(pattern.matcher("1-2-3-4").matches()); // true
System.out.println(pattern.matcher("http://1.0.0.127").matches()); // false
System.out.println(pattern.matcher("https://1.0.0.127").matches()); // false
System.out.println(pattern.matcher("ftp://1.0.0.127.in-addr.arpa").matches()); // false
System.out.println(pattern.matcher("http://1.0.0.127.in-addr.arpa").matches()); // true
System.out.println(pattern.matcher("https://1.0.0.127.in-addr.arpa").matches()); // true
于 2013-03-07T12:04:53.217 に答える
0

何を達成しようとしているのかわからない。ホスト部分が必要ですが、解決された部分、つまりIPアドレスは許可されていません。なぜあなたはそれが欲しいのですか?そして、オプションのポート番号はどうですか?そして、可能なログイン情報はどうですか?私の提案は、解析されたデータで何か深刻なことをしたい場合は、 java.net.URL(または)オブジェクトを使用することです。URI

正規表現のみで遊びたい場合は、入力テキストによっては正規表現では不十分な場合があるため、要件をより適切に指定してください。次の入力を検討してください。

Lorem ipsum.Dolor sit amen

ipsum.Dolor有効なホストとして受け入れる必要がありますか?http://プロトコル仕様がなく、IPアドレスでもないため、要件に応じて一致する必要があります。

于 2013-03-07T12:16:03.947 に答える