2016-10-11 102 views
2

我有一個正則表達式模式,可以在大約50%的情況下捕捉我想要的內容,我發現它與它不匹配的情況與字符串中的空格有關。這是與JavaScript正則表達式BTW。複雜的正則表達式模式不能識別空格?

正則表達式:

/\[url="https?:\/\/([a-z0-9-]+\.)*cnn\.com\/newsreel\/showreel\.php\?id=?([^\s]*[^.])?\"\]([^\s]*[^.])\[\/url\]/gi

字符串匹配

A)[url="http://www.cnn.com/newsreel/showreel.php?id=977976"]Test123[/url]

B)[url="http://www.cnn.com/newsreel/showreel.php?id=977976"]Test 1 2 3[/url]

現在,如果我嘗試運行ŧ他在A上的模式,它工作A - 好。但在B上,由於所有的空間,它失敗了。

我認爲這與我的第3匹配組([^\s]*[^.])有關,我猜這不是空格。任何人有任何想法,我怎樣才能讓它匹配空格以及?

謝謝!

回答

0

([^\s]*[^.]) 

更改第三匹配組

(.*[^.]) 

即,你.*(零個或多個字符)替換[^\s]*(零個或多個非空白字符)。

請注意,這也將允許其他空白字符,如製表符和潛在的換行符,這取決於如何使用正則表達式。如果這太鬆,可以選擇[\S ]*(零個或多個非空白字符或常規空格字符)。

+0

你破解它,非常感謝! – Mark

+0

其實我遇到了一個更多的測試問題,它捕獲多餘的字符。我將如何使用你的[\ S] *的其他建議? – Mark

+0

使用'([\ S] * [^。])'作爲第三個匹配組。 –