我有以下几行:
After=netfilter-persistent.service network-online.target docker.socket firewalld.service
After=network-online.target docker.socket firewalld.service netfilter-persistent.service
After=anothertest netfilter-persistent.service network-online.target docker.socket firewalld.service
After=network-online.target docker.socket firewalld.service
我是
After=
之后,netfilter-persistent.service
之前和之后的内容,以及After=
不存在,则netfilter-persistent.service
之后的所有内容。此正则表达式执行1,但不执行2:
^After=(.*?)?(?:netfilter-persistent\.service)(.*?)?$
此正则表达式执行2,但不执行1:
^After=(.*?)?(?:netfilter-persistent\.service)?(.*?)?$
这个很接近,但是netfilter-persistent.service
仍然在第1组:
^After=(.*?(?:netfilter-persistent\.service))?(.*?)?$
答案 0 :(得分:2)
您可以使第一个组在最后一个模式中不被捕获,并将.*?
与捕获组一起使用
^After=(?:(.*?)netfilter-persistent\.service)?(.*)$
请参见regex demo
详细信息
^After=
-字符串开头的After
子字符串(?:(.*?)netfilter-persistent\.service)?
-可选序列:
(.*?)
-第1组:除换行符以外的任何0+个字符,并且尽可能少netfilter-persistent\.service
-一个netfilter-persistent.service
子字符串(.*)
-第2组:除换行符以外的任意0+个字符,最多...... $
-字符串的结尾。