在python中生成正则表达式字符串

时间:2017-03-22 08:44:43

标签: python regex

我有一个单词,我试图在其中找到与模式匹配的单词子集。为此,我想创建一个正则表达式字符串,我将其作为变量传递给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]

当我在主方法输出中评估它时,现在是“无”。我希望它是真的。

1 个答案:

答案 0 :(得分:0)

我想你要声明一个原始字符串,然后你必须这样声明:

regex = r"foo"

foo是你的正则表达式。

regex = r"[^{}]".format(skip_letters)

请注意,{}也用于正则表达式中,因此您需要注意格式化{}的方式。