2015-09-01 49 views
2

我使用@diegoperini's regex from this siteValueError異常:在字符串 X {} FFFF無效 X轉義

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS 

我越來越:

ValueError: invalid \x escape 

對於正則表達式的一部分,那裏的在幾個地方有一個\ x {十六進制數}。

有沒有辦法讓這項工作?我試過\\x\xffff,似乎都不起作用。

編輯:Python的端口在gist。搜索「adamrofer」。它正是由jwodder提出的解決方案。

+0

我認爲你應該刪除大括號。所以'\ x {ffff} - > \ xffff' –

+0

看到我的問題,我試過了。 –

回答

4

As detailed here\xFF在Python只有當後面正好兩個十六進制數字沒有括號工作。如果你有四個十六進制數字,你必須使用\u代替:\uFFFF - 在那裏你有八個十六進制數字極少數情況下,這是\U\UFFFFFFFF

+0

這解決了我所要求的。然而,正則表達式似乎沒有做任何事情(即匹配任何網址)。我知道我的HTML文件包含URL(我可以將它們複製並粘貼到Chrome中並獲取圖像)。 –

相關問題