2016-04-26 4 views
1

私はAndroidでlinkifyを使用していますが、example.com/20が含まれているリンクで自分自身の活動を開始し、他のリンクの暗黙のインテントを実行したいと考えています。Regex:example.com/20

たとえば、これらのリンクをクリックすると、私自身のアクティビティが発生します。

https://example.com/2013/04/blah-blah-balh.html 
    http://example.com/2005/04/jurassic-pack-ola.html 
    https://www.example.com/2012/07/tlion-film-nolly.html 
    http://www.example.com/2016/08/rolj-ola-ola-po-me-them.html 

これらのリンクは、暗黙の意思に

http://www.example.com/rolj-ola-ola-po-me-them.html 
    https://hopeman.com/2016/12/juujjhgg.html 
    https://ekapurk.com/2001/04/tyhtt-poiuut-i.html 
私は http://regexr.com/\bexample(.com\/{20})?\bをテストした

を発射する必要がありますが、それだけで例をhighlighlightingだ

+0

'String pattern =" \ bexample [。] com/20 "'、 '\/{20}'は20個のスラッシュにマッチしますが、 '.com \/{20})? 'は'? 'は* 1または0の出現*を意味するので、オプションではありません。 '.'は改行以外の文字にマッチすることができます。 –

+0

あなたは 'https?:\/\ /(www \。)?example \ .com \/20'を正しく使うことに興味があります。 – rekire

+0

@rekire、私はまた、http:// – X09

答えて

1

あなたは

String pattern = "\\bexample[.]com/20"; 

を使用したりすることができますが、完全な文字列を一致させる必要がある場合:

String pattern = "https?://(?:w{3}[.])?example[.]com/20\\S*"; 

\/{20}は20個のスラッシュにマッチし、(.com\/{20})?がオプションであることを、一致させる必要はありません、 ?は、を意味し、1または0の出現は、である。また、.は、改行以外の任意の文字に一致することができ、エスケープするか、文字クラス内に入れる必要があります。

this regex demo 1およびregex demo 2を参照してください。

パターンの詳細:

  • https? - マッチhttp又はhttpss?手段として一致1又は0 s S)
  • :// - リテラル配列://
  • (?:w{3}[.])? - 1または0(=オプション) 3文字のwとそれに続くリテラルドット(www.
  • example[.]com/20 - リテラル文字列example.com/20
  • \S* - 空白以外の0以上の文字(*)。
+0

私はドットをマスクするために '[。]'を見たことがありません。しかし、それはうまくいくようです:-)私の個人的な意見だが、 'w {3} [。]'は読みにくく 'www \ .'で、2文字短い。 – rekire

+0

@rekire:実際には*マスキングではありません。それはパターンにリテラルドットを定義する単なる方法です。バックスラッシュの中で迷子にならないようにする。 –

+0

@Shafizadeh:Android正規表現で2つのバックスラッシュを使用することを意味します。 –

2

あなたがのために一致しますhttps?:\/\/(www\.)?example\.com\/20をチェックすることをお勧めします01で始まるexample.comまたはwww.example.comドメインのhttpおよびhttps URL URLの。

その場合は、あなたのURLをhtmlタグに埋め込むだけで済みます。