我正在尝试通过正则表达式而不是手动更改settings.py。我有一个正则表达式,它匹配所有已安装的应用程序并获取除最后一个括号之外的所有应用程序:
rgx = "(?P<start>INSTALLED_APPS.*?)\)"
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
)
match = re.search(rgx, content, re.DOTALL)
抓东西
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
但是由于某种原因,当我用一个新的应用程序去子它时,比如
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'my-new-app',
text, n = re.subn(rgx, new_string, content, re.DOTALL)
它不包含任何内容。我以 subn 身份运行并证明它不匹配。这是没有意义的,因为我使用的是与刚刚进行匹配的完全相同的正则表达式。如何获得完全相同的正则表达式来匹配,然后不匹配完全相同的字符串?
最佳答案
您使用 re.DOTALL
作为 count
参数。将其用作标志
:
re.subn(rgx, new_string, content, flags=re.DOTALL)
关于Python正则表达式匹配但不会立即子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428510/