the regex expression is as below:
if ($ftxt =~ m|/([^=]+)="(.+)"|o)
{
.....
}
这个正则表达式似乎与许多其他正则表达式不同。令我感到困惑的是“ |” ,大多数正则表达式使用“ /”代替“ |”。而且,组([^ =] +)也让我感到困惑。我知道[^ =]的意思是“字符串的开头”或“ =“,但是重复一次'^'一次或多次意味着什么?,如何解释呢?
您可以使用其他定界符来代替/
。例如,您可以使用:
m#/([^=]+)="(.+)"#o
或者
m~/([^=]+)="(.+)"~o
使用不同于此处的东西的好处/
是您不必转义斜杠,因为否则,您必须使用:
m/\/([^=]+)="(.+)"/o
^
[或[/]
]
([^=]+)
是一个捕获组,在内部,您有[^=]+
。[^=]
是否定的类,它将与不是的任何字符匹配=
。
^
在字符类开始时的行为有所不同,并且与字符类^
外部的行为不同,这意味着“行开始”。
至于最后一部分o
,这是一个标志,到目前为止我还没有见过,所以经过一番搜索,我把它引到了这篇文章中,我引用:
该
/o
修饰符位于perlop文档中,而不是perlre文档中,因为它是类似报价的修饰符,而不是regex修饰符。在我看来,这总是很奇怪,但事实就是如此。在Perl 5.6之前,即使变量未更改,Perl也会重新编译正则表达式。您无需再这样做了。
/o
尽管对变量进行了进一步的更改,您也可以使用一次编译正则表达式,但是正如其他答案所指出的那样,这样qr//
做更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句