Допущение: вам нужно имя myFunction
из "... def myFunction (s): ..."
Я нахожу что-то в вашем регулярном выражении и в его структуре.
\s*(def)\s+\([^\)]*\)\s*{?\s*
Давайте посмотрим на это шаг за шагом:
\s*
: совпадение с нулем или большим количеством пробелов. (def)
: соответствует слову def. \s+
: соответствует одному или нескольким пробелам. \([^\)]*\)
: соответствует сбалансированному () \s*
:соответствовать нулю или более пробелов.После этого в значительной степени не имеет значения, будете ли вы использовать только имя функции. Вы не соответствуете именно тому, что вы хотите из регулярного выражения .
Вы можете попробовать это регулярное выражение, если вы заинтересованы в этом с помощью регулярного выражения:
\s*(def)\s([a-zA-Z]*)\([a-zA-z]*\)
Теперь, как я структурировал регулярное выражение, вы получите def myFunction(s)
в группе 0, def
в группе 1 и myFunction
в группе 2.Таким образом, вы можете использовать следующий код для получения результата:
import re
def extractName(s):
string = ""
regexp = re.compile(r"(def)\s([a-zA-Z]*)\([a-zA-z]*\)")
for m in regexp.finditer(s):
string += m.group(2)
return string
Вы можете проверить свое регулярное выражение в реальном времени, зайдя на этот сайт .
Надеюсь, это поможет!