1

正規表現に関するチュートリアルに従っています。次の手順を実行するとエラーが発生します。

regex = r'(+|-)?\d*\.?\d*'  

どうやら、Pythonは(+ |-)が好きではありません。何が問題なのですか?
また、正規表現の前にrを追加しない場合の問題は何でしょうか?

4

2 に答える 2

3

+特殊文字です。括弧を使用して文字の範囲を指定できます。これは、この場合、パイプ文字で「または」を使用するよりも優れています。

regex = r'([+-])?\d*\.?\d*'  

それ以外の場合は、元のバージョンでエスケープする必要があります。

regex = r'(\+|-)?\d*\.?\d*'  

を使用することrは、Python で正規表現文字列を指定するための推奨される方法です。これは、解釈されるべきではない生の文字列を示し、バックスラッシュで実行する必要があるエスケープの量を減らすためです。これは、どこでも見られる単なる python 正規表現イディオムです。

r'(\+|-)?\d*\.?\d*'
#'(\\+|-)?\\d*\\.?\\d*'
于 2012-12-12T01:25:23.743 に答える
3

通常、「何かの 1 つ以上のインスタンス」を意味するため+、リテラルを取得するには正規表現でエスケープする必要があります。+

regex = r'(\+|-)?\d*\.?\d*'  

そしてrそれを「生の」文字列にします。がないとr、正規表現のエスケープ シーケンスが文字列のエスケープ シーケンスとして解釈され、さまざまな問題が発生します。(\b単語境界の代わりにバックスペースであること、およびそのようなこと。)

于 2012-12-12T01:26:19.440 に答える