新線

2011-08-17 56 views
0

正則表達式的適應,我下面的正則表達式查找的URI上面列出:新線

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

網址找到:

  1. www.example.org
  2. www.example -example.org
  3. www.example-example.org/product
  4. 您可以在www.example-找到它。 example.org/product。
  5. 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.!?,():]+因爲在每個非空白字符之前匹配表達式,這裏不需要+。我假設你只是希望你的模式不要以班級中的其中一個角色結束。

見你的模式on Regexr(我加\r你的第一類,因爲換行符有需要的話)

這是測試正則表達式

我覺得你的問題是,你想有一個非常有用的工具以允許鏈接中的換行符。你想如何處理?如果下一行中的單詞只是一個單詞或鏈接的一部分,您想如何區分行結尾與鏈接。 我認爲這是不可能的!

0

問題是在第二個方括號內部分的'^ \ s'。根據您的編程語言,'\ s'可能與新行匹配。所以,你告訴它匹配任何不是空格的東西,並且找到一個空格(新行)。

但是,這應該只是你的問題之一。你的正則表達式使用'^'和'$'字符,分別表示行的開始和結束。試試這個URL例如:

從www.example.org你好

它是否匹配?我認爲它不會。

+0

那好吧。不使用'^'和'$'字符也將匹配您的示例和我的4個示例。
但有另一個例子(5.我編輯我的帖子頂部)它返回我「www.example.org你會」 – frgtv10