我有几个带有这样的文本块的文件:
maxlength:
maxlength_js: 500
maxlength_js_label: 'Inhalt auf @limit Zeichen begrenzt, verbleibend: <strong>@remaining</strong>'
maxlength_js_enforce: true
maxlength_js_truncate_html: false
有时 maxlength_js_enforce: true 存在,有时不存在。 我想通过查找和替换将 maxlength_js_enforce: true 添加到所有此类 maxlenght: 块中。
我试图找到所有没有 maxlength_js_enforce 的 maxlength: 块,并使用带有负向前瞻的正则表达式模式,但不知怎的,我无法让它与多行一起工作,并且对这样一个块的结尾没有真正的限制。
我已经尝试过类似的图案了
(maxlength:(\s*.*))(?!enforce)
这是一个包含多次出现此类块的整个文件的示例https://regexr.com/7mjh1
确保打开整个文件示例以了解问题。
要么匹配多行,要么匹配不够,即使存在“enforce”,它也是匹配的。 我认为我没有正确理解这个概念,并且在文件中指定此类块的边界时遇到问题,猜测它一定非常简单,但不明白。
我将全局标志添加到模式中,以便使用 ^ 作为行首。这将在每个组中匹配,直到并包括可选的现有密钥:
^((\x20*)maxlength:.*([\r\n]+\2\x20{2}(?!\x20)(?!maxlength_js_enforce:).*)+)([\r\n]+\2\x20{2}maxlength_js_enforce:.*)?
您可以用此替换来添加/替换您想要的设置:
$1\n$2 maxlength_js_enforce: true