在正则表达式中使用字典键

时间:2018-09-27 18:23:18

标签: regex python-3.x dictionary

如果您有字典:

dic = {'a':1, 'b':2, 'c':3, 'd':4}

如何使用正则表达式搜索字符串中的每个键? 例如,在字符串中查找'a''b''c''d'? 我是不是要在正则表达式中手动编写所有键,还是有更方便的方法?手动表示:

re.search(r'(a|b|c|d)', string).group()

我为什么要问这个?我的字典很长。我要花一些时间在正则表达式中手动编写所有字典键。 而且我在任何地方都没有看到答案。

3 个答案:

答案 0 :(得分:0)

如果您需要将密钥输入到正则表达式字符串中,则可以从字典中获取密钥,然后将它们连接到您的正则表达式字符串中:

dic = {'a':1, 'b':2, 'c':3, 'd':4}
keys = dic.keys()

result = re.search(r'|'.join(keys), string).group()

答案 1 :(得分:0)

基本上,您只会得到文本中的键。使用集合更容易做到:

d ={"a":1,"b":1,"c":1,}

text ="This is some text that contains a and b but not the third key in your dict"

found = set(d)&set(text.split())

print(found)

输出:

set(['a', 'b'])

特别是因为您将需要保护具有密钥'pa'和包含'Champangner' ..的文本的正则表达式,除非您在示例中未对其添加其他限制,否则正则表达式将与之匹配。

Doku:

答案 2 :(得分:0)

re.search(r'|'.join(d.keys()), string).group()