正規表現を使用するかどうかにかかわらず、ユーザーが指定した2つの文字列の間でコンテンツを取得できますか? 私はPythonを使用しています。これまでのところ、私は見つけた:正規表現でユーザー指定の文字列を読み取ることはできますか?
しかし、これらの文字列は固定入力ではなく、ユーザー入力として読み取ることができます。これは可能ですか? 何か提案がありがとうございます。 ありがとうございます!
正規表現を使用するかどうかにかかわらず、ユーザーが指定した2つの文字列の間でコンテンツを取得できますか? 私はPythonを使用しています。これまでのところ、私は見つけた:正規表現でユーザー指定の文字列を読み取ることはできますか?
しかし、これらの文字列は固定入力ではなく、ユーザー入力として読み取ることができます。これは可能ですか? 何か提案がありがとうございます。 ありがとうございます!
ちょうど検索文字列/正規表現を構築するために文字列の連結を使用します。
string1 = "foo"
string2 = "bar"
re.findall(r'{}(.*?){}'.format(string1, string2), text, re.DOTALL)
編集:string.format
はクリーンであり、あなたがエスケープ正規表現のためのr
装飾を使用することができますので、私はKasramvdの答え@からインスピレーションを取りました。ユースケースに応じて文字列をre.escape
にするかどうかは決まります。
それは簡単に見えます:)ありがとう! – user3568044
あなたは(あなたの文字列で存在することができる)正規表現の表記をエスケープするためにre.escape()
を使用して文字列をエスケープ(あなたはどれも、正規表現の文字列を追加したい場合)raw_input()
を使用して文字列を取得することができ
import re
string1 = re.escape(raw_input("enter first string: "))
string2 = re.escape(raw_input("enter second string: "))
re.findall(r"{}(.*?){}".format(string1, string2), text, re.DOTALL)
ユーザーが*正規表現パターン*を入力フィールドに入力すると、なぜエスケープされますか? –
@WiktorStribiżewOPは*ユーザが指定した文字列*と正規表現ではないと言っていますが、もう一方は正規表現を意味するので、答えを更新してください。 – Kasramvd
ここに私がいつも使っている方法があります:
import re
string1=raw_input()
string2=raw_input()
check=re.compile(r'%s(.*)%s'%(string1,string2),re.DOTALL)
check.findall()
私はこれがあなたを助けてくれることを願っています。ありがとう!
なぜですか?しかし、それらを適用する前に正しい正規表現パターンであるかどうかをチェックする必要があります。 –