3

しばらく見回しましたが、おそらく適切なキーワードで「ググる」ことができないので、ここに来ました。URL ストリップ アウト プロトコルを最初の / に一致させる必要があります。

ターゲット: http:// から最初の / (おそらく最後の / 存在しない) または最後までの最初の部分文字列に一致します。ここで問題が発生します。

私はこの正規表現を書きました

(?<=//)(.*?)(?=/)

ただし、この正規表現は、プロトコルを除いて、末尾に少なくとも 1 つの「/」がある URL のみに一致します。

ここに一致するいくつかのURLがあります:

  • http:// www.google.com / (私の正規表現と一致)
  • http:// www.google.com
  • https://www.google _
  • xxx:// www.google.com /hello/bleh blah .../
  • xxx: //google.com
  • google.com /blah/hello.php?x=11_x.hi
4

4 に答える 4

0

正しい答えがあるようですが、末尾に「/」がない可能性がありません。これを試して:

(?<=//)(.*?)(?=/|$)
于 2013-03-07T01:51:29.760 に答える
0
^(?:\w+://)?([\w.-]+)/?.*$

(Java の二重バックスラッシュ) は、単純なものを含むすべての例で機能するようです。www.google.com

于 2012-12-04T13:53:49.663 に答える
0

何かのようなもの...

^(https?:\/\/)?([0-9a-zA-Z][-\w]*[0-9a-zA-Z\.)+[a-zA-Z]{2,6})\/

持っていた本で見ました。これは、変数 http/https を考慮し、空白を許可せず、おそらく最初のスラッシュで停止する必要があります。

私がこれを間違っていたらコメントしてください。

于 2012-12-04T13:56:35.067 に答える
0

これは、最後の例を除くすべての例で機能しています:

(?<=//)[^/\\s]+

[^/\\s]/andを除くすべての文字に一致する否定文字クラスです\s(スペース、タブ、または改行文字などの空白)

ここでRegexrを参照してください

うまくいかないのは最後の行です。リンクとは何かをどのように判断しますか? 最初の部分をオプションにすると/、空白を除くすべての文字に一致します。

于 2012-12-04T13:57:13.137 に答える