^(pause|unpause)\s+chef\s+(on\s+)?(\S+)\s+(.*)(--dryrun)?
我想:
pause chef on staging nodes AND test --dryrun
匹配并在两个单独的匹配组中使用“nodes AND test”和“--dryrun”。
就目前而言,我在一个匹配组中得到“节点和测试--dryrun”。
我在周围搜索并使用负向前瞻似乎不适用于我的目的,因为我想要任何不包含“--dryrun”的东西,但不是在行的开头。
谢谢!
答案 0 :(得分:0)
问题是您通过(--dryrun)
跟随?
是可选的。由于(.*)
在它之前,它将匹配与表达式匹配的其余部分一致的最长字符串,并且由于--dryrun
是可选的,因此它会吞噬它。
使用非贪婪量词使其使用较短的匹配。
您还需要在该行的末尾锚定。否则,.*
将匹配staging
后的空字符串,并且可选的--dryrun
将不匹配任何内容(因为它是可选的)。
^(pause|unpause)\s+chef\s+(on\s+)?(\S+)\s+(.*?)(--dryrun)?