【发布时间】:2022-11-19 01:09:02
【问题描述】:
我有一个包含多行的 YAML 文件,我知道有一行看起来像这样:
...
schemas: core,ext,plugin
...
请注意,此行开头有未知数量的空格(因为 YAML)。该行可以由 schemas: 表达式唯一标识。 schemas 属性的现有值数量未知,但大于零。我不知道这些值是什么,除了其中之一可能是foo。
如果 foo 尚未包含在任何位置的值列表中,我想使用正则表达式匹配和替换将单词 ,foo 附加到此行。 foo 可能出现在任何其他行,但我想忽略这些实例。我不想修改其他行。
我尝试过使用环视和捕获组的不同正则表达式,但都没有成功。我最近看起来很有希望的尝试是:
(?s)(?!.*foo)(.*schemas:.*)
但是,如果 foo 包含在任何其他行中,这将不匹配,这不是我想要的。
任何帮助将不胜感激。谢谢。
(顺便说一句,我使用 Java 正则表达式引擎。)
【问题讨论】:
-
你是说 foo 在
schemas:之后不在同一行吗?.*\hschemas:(?!.*foo).*regex101.com/r/ZKv3Bc/1 或者只有可选的前导空格^\h*schemas:(?!.*foo).*regex101.com/r/Kqd7dt/1