Я хотел бы сравнить строку A
с регулярным выражением R
.Python difflib с regex
A = u'Hi my friend, my name is Julio'
R = r'Hi\s+my\s+friend,\s+my\s+name\s+is([A-Za-z]+)'
В это время я могу легко узнать, если синтаксис хорошо благодаря re.match
и re.search
. Теперь я хотел бы изучить различия между A и B, когда матч не работает.
Мой первый случай простой. Я заменяю regex ([A-Za-z]+)
на (.+)
, чтобы узнать, соответствует ли проблема только в группе регулярных выражений. В этом случае я могу легко поднять вопрос, сказав, что синтаксис строки хорош для группы, определенной для имени.
Теперь, в случае неудачных шагов 1 и 2, я хотел бы сделать diff как HTML diff
, но с регулярным выражением, чтобы определить, где не удалось выполнить регулярное выражение.
Я изучил difflib
и функцию find_longest_match
, но кажется, что эта функция работает только с символом на символ, а не с подстрокой.
Есть ли у вас какие-либо идеи или предложения по определению дифференциала на основе сравнения регулярных выражений и потенциально вычислить отношение, измеряющее сходство?
Вам нужен двигатель, который будет делать parthial соответствия, или просто использовать каскадное optioal конструкции. Например: 'Hi (\ s + (my (\ s + (friend (, (\ s + (my (\ s + (name (\ s + (is ([A-Za-z] +)?)?)?)?)?)?)?)?)?)?)?)? ' – sln