Python正则表达式匹配但不会立即子

标签 python regex django

我正在尝试通过正则表达式而不是手动更改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/

相关文章:

python - twisted中tcp协议(protocol)数据丢失问题

php - 正则表达式问题替换

python - 匹配字符串并提取部分

python - 在类定义中添加参数

python - 获取共享相同列表值及其公共(public)值的所有字典键的字典

Python字典到xlsx中的列

java - 如何使用\Q\E 通过 DOTALL 转义文字化 unicode 字符?

python - Django 模板扩展不调用 CSS

Python/Django : while trying to connect Django with database, 出现错误 - ValueError:以 10 为基数的 int() 的文字无效: '0b1'

django - 如何在 Travis CI 上运行 redis?