Skip to main content
 首页 » 编程设计

Python:匹配包含正则表达式代码的两个变量的或

2025年05月04日24lonelyxmas

我想做的是获取包含通配符的用户输入文本(因此我需要保持这种方式),但进一步寻找指定的输入。因此,例如,我在下面工作时使用管道 |。

我想出了如何让它工作:

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] 

返回:
别吵了
和一个b

还有

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] 

返回:
你 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:不支持 | 的操作数类型:'str' 和 'str'

我经常遇到这个错误,比如我在 userin1|userin2 周围加上方括号 () 或 []。

我发现了以下内容:

Python regular expressions OR

但无法让它工作;..{-( .

我想做的是能够理解如何传递这些正则表达式变量,例如 OR 的变量,并返回两者的所有匹配项以及诸如 AND 之类的东西——这最终很有用,因为它将对文件进行操作,让我知道哪些文件包含具有各种逻辑关系 OR、AND 等的特定单词。

非常感谢您的意见,

布莱恩

请您参考如下方法:

虽然我无法从 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]