変換文字列を生の文字列リテラルに変換する記事がありますが、それらのどれも私の状況には役立ちません。ユーザ入力文字列を生の文字列リテラルに変換して正規表現を作成する
私の問題は、次のとおりです。
言ってやるが、例えば、私はパターン「\セクションでは、」テキスト「ABCD \ sectiondefghi」であるかどうかを知りたいです。もちろん、私はこれを行うことができます:
import re
motif = r"\\section"
txt = r"abcd\sectiondefghi"
pattern = re.compile(motif)
print pattern.findall(txt)
それは私が欲しいものを私に与えるでしょう。しかし、新しいテキストで新しいパターンを見つけるたびに、痛いコードを変更する必要があります。したがって、私はこのような、より柔軟なもの(test.pyを)書きたい:
import re
import sys
motif = sys.argv[1]
txt = sys.argv[2]
pattern = re.compile(motif)
print pattern.findall(txt)
その後、私はこのようなターミナルでそれを実行したい:
python test.py \\section abcd\sectiondefghi
しかし、動作しないこと(私は\\\\section
を使うのが嫌です)。
私のユーザー入力(端末またはファイルから)をPythonの生の文字列に変換する方法はありますか?あるいは、ユーザー入力から正規表現パターンのコンパイルを行う良い方法がありますか?
ありがとうございました。
一方、リテラル文字列を検索している場合、reは間違ったツールです。 – Fredrik
@Fredrik:私はこれがより大きなパターンの一部となり、OPが単純化されたと仮定していました。 –
@MartijnPietersありがとう、re.escapeが本当に役立ちます! – dbrg77