2016-04-05 8 views
1

正規表現を使用するかどうかにかかわらず、ユーザーが指定した2つの文字列の間でコンテンツを取得できますか? 私はPythonを使用しています。これまでのところ、私は見つけた:正規表現でユーザー指定の文字列を読み取ることはできますか?

しかし、これらの文字列は固定入力ではなく、ユーザー入力として読み取ることができます。これは可能ですか? 何か提案がありがとうございます。 ありがとうございます!

+0

なぜですか?しかし、それらを適用する前に正しい正規表現パターンであるかどうかをチェックする必要があります。 –

答えて

1

ちょうど検索文字列/正規表現を構築するために文字列の連結を使用します。

string1 = "foo" 
string2 = "bar" 

re.findall(r'{}(.*?){}'.format(string1, string2), text, re.DOTALL) 

編集string.formatはクリーンであり、あなたがエスケープ正規表現のためのr装飾を使用することができますので、私はKasramvdの答え@からインスピレーションを取りました。ユースケースに応じて文字列をre.escapeにするかどうかは決まります。

+0

それは簡単に見えます:)ありがとう! – user3568044

2

あなたは(あなたの文字列で存在することができる)正規表現の表記をエスケープするために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) 
+0

ユーザーが*正規表現パターン*を入力フィールドに入力すると、なぜエスケープされますか? –

+0

@WiktorStribiżewOPは*ユーザが指定した文字列*と正規表現ではないと言っていますが、もう一方は正規表現を意味するので、答えを更新してください。 – Kasramvd

0

ここに私がいつも使っている方法があります:

import re 
string1=raw_input() 
string2=raw_input() 
check=re.compile(r'%s(.*)%s'%(string1,string2),re.DOTALL) 
check.findall() 

私はこれがあなたを助けてくれることを願っています。ありがとう!

関連する問題