繁体   English   中英

提高正则表达式的效率

[英]Improving the efficiency of a regex

给定一个这样的字符串:

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+首先捕获所有非空白字符,然后您还匹配最后一个; 而不是断言它。

此外,您可以从组中省略量词* ,因为重复它零次或多次它也可以匹配空字符串。

upstream-host=(?P<hostname>\S+);

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM