役に立ちましたか?

解決

「このパターンは最も近代的な正規表現の実装で動作するはずです」と述べているため、

元のソースと特に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:]は、

と同じであると言います
[-!\"#$%&\'()*+,./:;<=>?@\\[\\\\]^_`{|}~]

Pythonはありません POSIXブラケット表現するます。

[:punct:]ブラケット表現は

のASCIIに同等です
[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~] 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top