Генерация и применение правил / регулярных выражений для соответствия двум строкам

У меня проблема с сопоставлением имен. Я хочу создать правило между двумя строками. Одна строка почти такая же, как другая строка. Пример-

string 1: abc[1].def[2].ghi_jkl 
string 2: abc_1__def_2__ghi_jkl

Здесь строковые изменения выполняются только вокруг специальных символов ([,], и т. Д.). Я хочу создать правило или регулярное выражение, используя эти строки в качестве входных данных. Применяя правило к строке, мы получим другую строку точно. Аналогичное правило может быть применено к другим строкам для генерации соответствующих совпадающих строк.

Или любой другой метод, который может быть использован для сопоставления такого типа строки?

Примечание. Эти строки были только примером. Может быть другой тип преобразования из одной строки в другую вокруг специальных символов.

1 ответ

Регулярные выражения сделаны для этого. Вы можете поймать определенные подстроки, используя круглые скобки в регулярном выражении, тем самым определяя группы 1 и 2 в следующем шаблоне.

import re
pattern = r'abc(.+)def(.+)ghi_jkl'

str1 = 'abc[1].def[2].ghi_jkl'
str2 = 'abc_1__def_2__ghi_jkl'

m1 = re.match(pattern,str1)  # or re.search()
print('extracted {} and {}'.format(m1.group(1), m1.group(2)))

m2 = re.match(pattern,str2)
print('extracted {} and {}'.format(m2.group(1), m2.group(2)))
Другие вопросы по тегам