Как применить регулярное выражение после применения обходных путей?

#python #regex #regex-lookarounds

#python #регулярное выражение #регулярное выражение-поиск

Вопрос:

У меня есть текстовые файлы, в которых есть данные примерно такого рода:
файл 1

 var field = "123456";
 

файл 2

 var field = abdxg@% "345789";
 

Итак, я использовал выражение регулярного выражения:

 (?<=var fhID).*(?=;)
 

Это возвращает: = "123456" в файле 1 и = abdxg@% "345789" в файле 2.

Теперь мне нужно одно регулярное выражение, которое могло бы извлекать только цифры из строки после сопоставления с обходными путями, т.е. После изменения моего текущего выражения регулярного выражения я должен попасть 123456 в файл 1 и 345789 в файл 2.

Комментарии:

1. Ваше текущее регулярное выражение ничему не будет соответствовать. Это опечатка? В любом случае, вы могли бы использовать (?<=var field).*"(d )"(?=;) и находить свои цифры в группе 1. В этом случае вы можете вообще избавиться от обходных путей : var field.*"(d )"; .

2. Да, это была опечатка, моя ошибка

Ответ №1:

Вы можете использовать это регулярное выражение и получить совпадающие цифры в группе захвата:

 (?<=var field)[^;d]*(d )[^;]*(?=;)
 

Демонстрация регулярных выражений

кстати, это должно быть field в lookbehind вместо fhID .

Подробности регулярных выражений:

  • (?<=var field) : Посмотрите назад, чтобы утверждать, что мы имеем var field перед текущей позицией
  • [^;d]* : Сопоставьте 0 или более любых символов, которые не ; являются и цифрой
  • (d ) : Сопоставьте 1 цифры в группе захвата # 1
  • [^;]* : Сопоставьте 0 или более любых символов, которые не ;
  • (?=;) : Позитивный взгляд на то, чтобы утверждать, что у нас есть ; преимущество перед текущей позицией

Комментарии:

1. Произошла опечатка, мой плохой и спасибо за объяснение