更具体地说,有一行(在给定字符串中的其他行中):
sudo:x:27:foo,bar,baz
^---we need to match this character
前缀是已知的,可以表示为^sudo:x:\d+
问题:肯定的后向断言必须是固定大小,否则我会使用(?<=sudo:x:\d+)
问题:如何匹配那个精确的冒号(它必须是唯一匹配的字符)
游乐场:http ://regex101.com/r/gG9vW6/2
PS:对于那些好奇我为什么需要它的人:
这只是更大任务的一部分,可以表示为:将用户添加到 sudo 组(如果尚不存在)并具有以下解析器限制(它来自正在使用的软件,无法更改):
- 只能进行替换操作,所以需要匹配任意字符
(matches)
在替换字符串中使用正则表达式和引用在技术上是不可能的
更新
有一种使用方法(matches)
,所以不再是问题了:-)
这是在 cfengine 中引用匹配项的方法:
$(match.N)
其中 N 是捕获组的索引。
请参阅:https ://docs.cfengine.com/docs/3.5/manuals-language-concepts-pattern-matching-and-referencing.html