给定如下字符串:
upstream-status=502; upstream-scheme=http; upstream-host=dfsdf-dsfsd88.dsfsdf99.sdfsdf.dfdf.in.sdfsf; upstream-url=%2FWebObjects%2Fdsdf.woa;
我写的匹配和提取上游主机的正则表达式是:
upstream-host=(?P<hostname>S+(?=;))*
?P<hostname>
允许我创建一个命名组。
S+
匹配实际主机名。
?=;
表示不将;
包含在命名组中。
最后一个*
说我不在乎后面是什么
我有一种挥之不去的感觉,有一种更好的方法来写这个正则表达式。
您可以省略前瞻性并匹配组外的;
,因为S+
首先捕获所有非空白字符,然后您还匹配最后一个;
,而不是断言它。
还可以从组中省略量词*
,因为重复它0次或多次,它也可以匹配空字符串。
upstream-host=(?P<hostname>S+);
Regex演示