2017-07-14 12 views
-1

私は現在、Pythonで正規表現を学習しています。正規表現が実際に一致するものが混乱しています。たとえば、'\\'は実際には'\'なので、文字列'abc\\cde''\'と一致する必要がある場合はどうなりますか? re.findall(r'\', '010\\aa')はまったく動作しません。助けてくれてありがとう。他の人が述べたようにPython:正規表現はエスケープシーケンスと一致しますか?

+0

're.findall(R '\\'、 '010 \\ AA')'あなたは生の文字列の末尾にバックスラッシュを持つことはできません –

+0

ます。https://のstackoverflow .com/questions/647769/why-cant-pythons-raw-string-literal-ends-a-single-backslashで終わる – jonrsharpe

+0

Pythex は正規表現を試してみるのに最適な方法です。何が効果があるか見てください。 – SNygard

答えて

0

\は、あなたはまだ生の文字列にエスケープする必要がある1つの文字である:r'\\''\\'とは異なりバックスラッシュ、ないものを含む、長さ2の文字列であることを

re.findall(r'\\', '010\\aa') 

注意。これはhttps://docs.python.org/2.0/ref/strings.htmlの下部に記載されています。

+0

'len(r '\ x07')'は4文字であるため、 ''\ a''と同じではありません。私は、正規表現ライブラリが独自の変換を行っているので、これが ''\ a' 'にマッチすると思います。 – aaronm04

+0

Pythonは生のリテラルをパースするときにエスケープを削除することを拒否します。 – sln

0

常に区切り文字を文字列でエスケープする必要があります。
エスケープされた区切り文字を解析する必要があるため、
は、エスケープ自体を解析する必要があります。

これは、生の文字列であっても、言語ソース文字列解析の事実です。

例:

' => r'\'' 
\' => r'\'' 
\\' => r'\\\'' 
関連する問題