У меня есть список составных и простых регулярных выражений, которые мне нужно упростить. Скажем ["(crazy|cute|funny)( \w+){0,5} cat", "I love( \w+){0,5} cats)"]
. Мне нужно определить те, которые имеют конкретную картину. Например, я хочу определить те из них, которые содержат или ("|") , и упростить их до единого шаблона.
В приведенном выше примере я хочу преобразовать "(crazy|cute|funny)( \w+){0,5} cat
в ["crazy( \w+){0,5} cat", "cute( \w+){0,5} cat", "funny( \w+){0,5} cat"]
. Я не хочу менять "I love( \w+){0,5} cats)"
, потому что это простое и не составное регулярное выражение.
Я выдвинул следующее регулярное выражение для определения таких примеров:
re = "\((\w+{1}\|){1,10}\w+{1}\)"
Но это не идентифицирует их. Я не уверен, что не так.
def sep_rules(search_list):
new_query_list = list()
for item in search_list:
if "|" not in item:
new_query_list.append(item)
else:
re = "\((\w+{1}\|){1,10}\w+{1}\)"
print item
print re_search(item, re) # does not identify them correctly
Входные данные:
["(crazy|cute|funny)( \w+){0,5} cat", "I love( \w+){0,5} cats)"]
Ожидаемый результат:
["crazy( \w+){0,5} cat" , "cute( \w+){0,5} cat" , "funny( \w+){0,5} cat" , "I love( \w+){0,5} cats)"]