[英]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.