Python 如何将regexp转换为list

Python 如何将regexp转换为list,python,string,split,Python,String,Split,我得到了一个只有|和()的regexp字符串,比如: (你好,你好)我叫(鲍勃·罗伯特) 我想得到与regexp匹配的字符串的完整列表: 你好,我叫鲍勃 你好,我叫罗伯特 嗨,我叫鲍勃 嗨,我叫罗伯特 这是一个工具(图书馆)谁已经这样做 我的第一个问题是将regexp字符串拆分为如下数组: [['Hello','Hi'],'my name is' ,['Bob','Robert']] 使用正则表达式执行:-) 试试exrex,你觉得这对你有用吗 简单脚本 import exrex print(

我得到了一个只有|和()的regexp字符串,比如:

(你好,你好)我叫(鲍勃·罗伯特)

我想得到与regexp匹配的字符串的完整列表:

你好,我叫鲍勃 你好,我叫罗伯特 嗨,我叫鲍勃 嗨,我叫罗伯特

这是一个工具(图书馆)谁已经这样做

我的第一个问题是将regexp字符串拆分为如下数组:

[['Hello','Hi'],'my name is' ,['Bob','Robert']]
使用正则表达式执行:-)


试试exrex,你觉得这对你有用吗

简单脚本

import exrex
print(list(exrex.generate('(Hello|Hi) my name is (Bob|Robert)')))
输出

→ python new_test.py
['Hello my name is Bob', 'Hello my name is Robert', 'Hi my name is Bob', 'Hi my 
name is Robert']

您可以尝试下面的解决方案,这里我没有导入任何模块。使用的唯一功能是剥离、拆分和替换

input_string = "(Hello|Hi) my name is (Bob|Robert)"
split_string = (input_string.replace("("," ").replace(")"," ")).split("  ")
print ([i.strip().split("|") for i in split_string])

#Output --> [['Hello', 'Hi'], ['my name is'], ['Bob', 'Robert']]

我希望这有帮助


如果您需要查询的最终解决方案,请使用以下代码:

from itertools import product
input_string = "(Hello|Hi) my name is (Bob|Robert)"
split_string = (input_string.replace("("," ").replace(")"," ")).split("  ")
jj = [i.strip().split("|") for i in split_string]
kk = list(product(*jj))
print ([" ".join(i) for i in kk])
#output --> ['Hello my name is Bob', 'Hello my name is Robert', 'Hi my name is Bob', 'Hi my name is Robert']
上述代码也适用于:input|string=“(Hello | Hi | Hey)my(name | naam)is(Bob | Robert)”

from itertools import product
input_string = "(Hello|Hi) my name is (Bob|Robert)"
split_string = (input_string.replace("("," ").replace(")"," ")).split("  ")
jj = [i.strip().split("|") for i in split_string]
kk = list(product(*jj))
print ([" ".join(i) for i in kk])
#output --> ['Hello my name is Bob', 'Hello my name is Robert', 'Hi my name is Bob', 'Hi my name is Robert']