質問
私はPythonで仕事にアドレスをを認識するために、この新しい方法を書き換える方法を教えてください。
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))
解決
「このパターンは最も近代的な正規表現の実装で動作するはずです」と述べているため、
元のソースと特にPerlの。 Pythonの正規表現の実装はモダンで、 Perlののに似ていますが、[:punct:]
文字が欠落していますクラス。
>>> import string, re
>>> pat = r'\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^%s\s]|/)))'
>>> pat = pat % re.sub(r'([-\\\]])', r'\\\1', string.punctuation)
必要に応じて re.sub()
コールは、<文字セット内の特定の文字をエスケープ/ A>。
編集:それはちょうどののすべての前にバックスラッシュをスティックので、使用re.escapeは()、同じようにうまく動作します。それは最初に私には原油を感じたが、確かにこの場合の罰金に動作します。
>>> pat = pat % re.escape(string.punctuation)
他のヒント
私はPythonがこの表現を持っていないと思います。
[:punct:]
ウィキペディアの[:punct:]
は、
[-!\"#$%&\'()*+,./:;<=>?@\\[\\\\]^_`{|}~]
所属していません StackOverflow