<pre name="code" class="html"><pre name="code" class="html">看elk 看到一个正则;
\s+(?<request_time>\d+(?:\.\d+)?)\s+
回顾下:
(?:pattern)
匹 配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合一个模式的各个部分是很有用。例如, ‘industr(?:y|ies) 就是一个比 ‘industry|industries’ 更简略的表达式。
表示括号只是起分隔作用,不将括号中匹配的内容存入内存中
因为如果不加?:的话,括号内匹配的内容会放入$1,$2...这些变量中
1、命名分组格式为(?<grp name>),反向引用时用\k<grp name>
2、命名分组的匹配的结果存在在变量%+变量中,取命名分组值,$+{grp name}.
[tomcat@wx02 test]$ cat a2.pl
my $str="456.123a";
if ($str=~/\d+(\.\d+)/){print "\$1 is $1\n"};
[tomcat@wx02 test]$ perl a2.pl
$1 is .123
\s+(?<request_time>\d+(?:\.\d+)?)\s+ 解释
最新推荐文章于 2022-07-28 11:35:01 发布
这篇博客介绍了正则表达式 `s+(?<request_time>d+(?:.d+)?)s+` 的含义和使用场景。解释了 `(?:...)` 在正则中的作用,即非获取匹配,以及命名分组 `(?<grp name>)` 的功能。通过示例代码展示了`d+(.d+)?`和`d+(?:.d+)?`的区别,前者允许匹配0次或1次的小数部分,而后者同样允许0次或1次,但不保存小数部分的匹配结果。
摘要由CSDN通过智能技术生成