提高正则表达式的效率



给定如下字符串:

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演示

最新更新