2011-08-17 5 views
0

私は上記のURIを検索するには、次の正規表現をしました:見つけるためのRegExp適応

"^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$" 

のURL:

  1. www.example.org
  2. www.exampleをたとえば、www.example-
    example.org/product
  3. www.example.org
    あなたはそれを見つけるでしょう。

数字1,2,3が見つかりますが、4.「www.example-」をURIとして配信します。 4.最後にポイントがない場合は、正確にお届け致します。

編集:削除すると^$は5番しか動作しません。

誰でもお手伝いできますか?

答えて

1

あなたのパターン

^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$ 

が、これは必要なし繰り返し、文字クラス、ないか、または可能ではありません

^w{3}\.[\S\n]+[^\s.!?,():]$ 

[\S\-\n|\S]に簡略化することができ、-は、\ Sに含まれています。だから[\S\n]も同じことをしています。

[^\s.!?,():]+これ以外のすべての空白をこの前の式と一致させるため、ここで+は必要ありません。あなたのパターンがクラスのキャラクターの1人で終わらないようにしたいと思っています。

私はあなたの問題は、あなたがしたいということだと思います。これは、正規表現に

をテストするために非常に便利なツールです、あなたのパターンon Regexr(ラインは、それが必要と壊れるので、私は、あなたの最初のクラスに\rを追加しました)

を参照してください。リンクの改行を許可します。どのようにこれを処理したいですか?次の行の単語が単なる単語またはリンクの一部である場合、どのように行がリンクで終わるかを区別したいと思いますか? これはできないと思います!

0

問題は、2つ目の角括弧内の '^ \ s'です。プログラミング言語によっては、 '\ s'が新しい行と一致することがあります。だから、空白ではないものとマッチするように指示し、空白(改行)を見つけます。

ただし、これは問題の1つに過ぎません。あなたの正規表現はそれぞれ行の開始と終了を意味する '^'と '$'文字を使います。このURLの例を試してみてください。

ハローwww.example.org

から、それが一致していましたか?私はそうは思わない。

+0

まあまあです。 '^'と '$'文字を使用しないと、あなたの例と私の4つの例も一致します。
しかし、もう一つの例があると(私は私の投稿を編集します)、私は "www.example.org You'll" – frgtv10