我要做的是获取包含通配符的用户输入文本(所以我需要保持这种方式),但还要查找指定的输入。因此,例如,我在下面工作时使用管道 |。
我想出了如何使这项工作:
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
n
我不明白它在做什么,好像我摆脱了打印中的所有保存链接 [0] 我得到
:
你
但是,我可以传入用户输入的正则表达式字符串:
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)
但是当我尝试使用管道将其更新为两个用户字符串时:
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: unsupported operand type(s) for |: 'str' and 'str'
我经常收到此错误,例如如果我在 userin1|userin2 周围加上括号 () 或 []。
我发现了以下内容:
但无法让它工作;..{-(。
我想做的是能够理解如何传递这些正则表达式变量,例如 OR 并返回两者的所有匹配项以及诸如 AND 之类的东西 - 这最终是有用的,因为它将在文件并让我知道哪些文件包含具有各种逻辑关系 OR、AND 等的特定单词。
非常感谢您的想法,
布赖恩