2

私がやろうとしているのは、ワイルドカードを含むユーザー入力テキストを取得することです (そのため、それらをそのままにしておく必要があります) が、さらに指定された入力を探します。たとえば、以下で作業している場合は、パイプ | を使用します。

私はこれを機能させる方法を見つけました:

dual = 'a bunch of stuff and a bunch more stuff!'
reobj = re.compile('b(.*?)f|\s[a](.*?)u', re.IGNORECASE)
result = reobj.findall(dual)
for link in result:
        print link[0] +'    ' + link[1]

戻り値:
unch o
       nd ab

同じように

dual2 = 'a bunch of stuff and a bunch more stuff!'
#So I want to now send in the regex codes of my own.
userin1 = 'b(.*?)f' 
userin2 = '\s[a](.*?)u'
reobj = re.compile(userin1, re.IGNORECASE)
result = reobj.findall(dual2)
for link in result:
        print link[0] +'    ' + link[1]

戻り値:
u n
u n

すべての保存リンク[0]を印刷物から取り除くかのように、それが何をしているのか理解できません:
u
u

ただし、ユーザー入力の正規表現文字列を渡すことはできます。

dual = 'a bunch of stuff and a bunch more stuff!'
userinput = 'b(.*?)f'
reobj = re.compile(userinput, re.IGNORECASE)
result = reobj.findall(dual)
print(result)

しかし、これをパイプで2つのユーザー文字列に更新しようとすると:

dual = 'a bunch of stuff and a bunch more stuff!'
userin1 = 'b(.*?)f' 
userin2 = '\s[a](.*?)u'
reobj = re.compile(userin1|userin2, re.IGNORECASE)
result = reobj.findall(dual)
print(result)

エラーが発生します:

reobj = re.compile(userin1|userin2, re.IGNORECASE) TypeError: サポートされていないオペランド型 |: 'str' および 'str'

userin1|userin2 を括弧 () または [] で囲んだ場合などに、このエラーが頻繁に発生します。

私は以下を見つけました:

Python 正規表現 OR

しかし、それを機能させることはできません ;..{-( .

私がやりたいことは、これらの正規表現変数 (OR など) を渡す方法を理解し、両方のすべての一致と AND などを返す方法を理解できるようにすることです。ファイルと、OR、AND などのさまざまな論理関係を持つ特定の単語を含むファイルを教えてください。

ご意見ありがとうございます。

ブライアン

4

1 に答える 1

1

A. Rodas からの回答は得られませんでしたが、彼は .join のアイデアを提供してくれました。私が取り組んだ例 - (リンク [0] とリンク [1] で) わずかに異なる結果が返されますが、望ましい結果が得られます。

userin1 = '(T.*?n)'
userin2 = '(G.*?p)'
list_patterns = [userin1,userin2]
swaplogic = '|'
string = 'What is a Torsion Abelian Group (TAB)?'
theresult = re.findall(swaplogic.join(list_patterns), string)
print theresult
for link in theresult:
        print link[0]+'  '+link[1]
于 2013-04-07T20:50:38.343 に答える