我有一个单词,我试图在其中找到与模式匹配的单词子集。为此,我想创建一个正则表达式字符串,我将其作为变量传递给re.match()
对于模式,我知道单词的长度,我知道字符串中没有出现的字符集(即missed_list
),我知道字符串中出现的一组字符(以及这些字符)字符不会再出现,即hit_list
),我知道这些字符的位置(即在有序列表中cur_state
)
我在创建此正则表达式字符串时遇到问题。这是我到目前为止的代码。
def get_regex_str(cur_state, hit_list, missed_list):
skip_letters = ''.join(missed_list)
skip_letters += ''.join(hit_list)
regex = "r"
for c in cur_state:
if(c == ''):
regex +="[^"+skip_letters+"]"
else:
regex += c
print regex
return regex
if __name__ == '__main__':
hit = ['o']
missed =['b','n']
state = ['','o','']
get_regex_str(state,hit, missed)
reg = get_regex_str(state,hit, missed)
print re.match(reg, "mom")
我做错了什么?有人可以建议我如何创建这个正则表达式字符串吗?
我现在生成的正则表达式字符串是r[^bno]o[^bno]
。
当我在主方法输出中评估它时,现在是“无”。我希望它是真的。
答案 0 :(得分:0)
我想你要声明一个原始字符串,然后你必须这样声明:
regex = r"foo"
foo是你的正则表达式。
regex = r"[^{}]".format(skip_letters)
请注意,{}也用于正则表达式中,因此您需要注意格式化{}的方式。